5.3. Verzeichnisse in /proc

Allgemeine Informationsgruppen bezüglich des Kernels werden in Verzeichnisse und Unterverzeichnisse in /proc sortiert.

5.3.1. Prozess-Verzeichnisse

Jedes /proc Verzeichnis enthält einige Verzeichnisse mit numerischen Namen. Eine Liste mit solchen fängt ähnlich dieser Liste an:

dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1010
dr-xr-xr-x    3 xfs      xfs             0 Feb 13 01:28 1087
dr-xr-xr-x    3 daemon   daemon          0 Feb 13 01:28 1123
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 11307
dr-xr-xr-x    3 apache   apache          0 Feb 13 01:28 13660
dr-xr-xr-x    3 rpc      rpc             0 Feb 13 01:28 637
dr-xr-xr-x    3 rpcuser  rpcuser         0 Feb 13 01:28 666

Diese Verzeichnisse heißen Prozess-Verzeichnisse, weil sie sich auf eine Prozess-ID beziehen und Informationen zu diesem Prozess enthalten. Der Eigentümer und die Gruppe jedes Prozess-Verzeichnisses wird auf die ID des Benutzers, der den Prozess ausführt, gesetzt. Wenn der Prozess beendet wird, verschwindet das zugehörige /proc Prozess-Verzeichnis.

Jedes Prozess-Verzeichnis enthält die folgenden Dateien:

5.3.1.1. /proc/self/

Das Verzeichnis /proc/self ist ein Link zum zur Zeit laufenden Prozess. Das erlaubt einem Prozess, sich selbst zu beobachten, ohne die eigene Prozess-ID zu kennen.

In einer Shell-Umgebung hat eine Auflistung des Verzeichnises /proc/self den gleichen Inhalt wie die Auflistung des Prozess-Verzeichnisses dieses Prozesses.

5.3.2. /proc/bus/

Dieses Verzeichnis enthält spezifische Informationen zu den verschiedenen Bussystemen, die auf einem System verfügbar sind. Zum Beispiel finden Sie auf einem Standard-PC mit ISA, PCI und USB Bus, aktuelle Daten zu jedem dieser Bussysteme im Verzeichnis /proc/bus.

Der Inhalt der Unterverzeichnisse und Dateien hängt sehr von der genauen Konfiguration Ihres Systems ab. Allerdings enthält jedes Verzeichnis für jedes der Bustypen mindestens ein Verzeichnis für jeden Bus eines Typen. Diese individuellen Bus-Verzeichnisse, normalerweise mit Zahlen wie 00 anzusprechen, enthalten binäre Dateien, die sich auf die verschiedenen Geräte auf dem Bus beziehen.

So hat ein System mit einem USB-Bus, aber ohne angeschlossene USB-Geräte ein /proc/bus/usb Verzeichnis mit verschiedenen Dateien:

total 0
dr-xr-xr-x    1 root     root            0 May  3 16:25 001
-r--r--r--    1 root     root            0 May  3 16:25 devices
-r--r--r--    1 root     root            0 May  3 16:25 drivers

Das Verzeichnis /proc/bus/usb enthält Dateien, die zu Geräten an den USB-Bussen gehören, genauso wie die Treiber, die gebraucht werden, um die Geräte zu benutzen. Das Verzeichnis /proc/bus/usb/001 enthält alle Geräte am ersten USB-Bus. Wenn Sie sich den Inhalt der Datei devices ansehen, können Sie sehen, dass es sich um das USB root Hub auf dem Mainboard handelt:

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=d400
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

5.3.3. /proc/driver/

Dieses Verzeichnis enthält Informationen zu bestimmten Treibern, die vom Kernel verwendet werden.

Eine allgemein hier zu findende Datei ist rtc, welche die Ausgabe des Treibers für die Echtzeituhr (RTC), ein Gerät zum Erhalten der Zeit während der Rechner ausgeschaltet ist, darstellt. Eine Beispielausgabe von /proc/driver/rtc:

rtc_time	: 01:38:43
rtc_date	: 1998-02-13
rtc_epoch	: 1900
alarm		: 00:00:00
DST_enable	: no
BCD		: yes
24hr		: yes
square_wave	: no
alarm_IRQ	: no
update_IRQ	: no
periodic_IRQ	: no
periodic_freq	: 1024
batt_status	: okay

Informationen über den RTC finden Sie unter /usr/src/linux-2.4/Documentation/rtc.txt.

5.3.4. /proc/fs

Dieses Verzeichnis zeigt an, welche Dateisysteme exportiert werden. Arbeiten Sie mit einem NFS Server, geben Sie cat /proc/fs/nfs/exports ein, um die gemeinsam verwendeten Dateisysteme und die dafür gewährten Berechtigungen anzuzeigen. Weitere Informationen zur gemeinsamen Verwendung von Dateisystemen mit NFS finden Sie unter Kapitel 9.

5.3.5. /proc/ide/

Dieses Verzeichnis beinhaltet Informationen über IDE-Geräte auf diesem System. Jeder IDE-Kanal wird von einem seperaten Verzeichnis wie z.B. /proc/ide/ide0 und /proc/ide/ide1 repräsentiert. Zusätzlich gibt es eine drivers Datei, die die Versionsnummer der verschiedenen in diesem IDE-Kanal verwendeten Treiber darstellt:

ide-cdrom version 4.59
ide-floppy version 0.97
ide-disk version 1.10

Viele Chipsätze bieten eine Informationsdatei in diesem Verzeichnis an, welche zusätzliche Daten betreffend der Festplatten, die über die Kanäle angebunden sind, ausgibt. Zum Beispiel gibt ein generischer Intel PIIX4 Ultra 33 Chipsatz eine Datei /proc/ide/piix aus, die Ihnen zeigt, ob DMA oder UDMA für Geräte an den IDE-Kanälen aktiviert sind:



                              Intel PIIX4 Ultra 33 Chipset.
------------- Primary Channel ---------------- Secondary Channel -------------
                 enabled                          enabled
------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------
DMA enabled:    yes              no              yes               no 
UDMA enabled:   yes              no              no                no 
UDMA enabled:   2                X               X                 X
UDMA
DMA
PIO

Im Verzeichnis eines IDE-Kanals, wie z.B. ide0 für den ersten Kanal, finden Sie noch mehr Informationen. Die Datei channel zeigt die Kanalnummer an, wohingegen die Datei model den Bustyp am Kanal anzeigt, z.B. pci.

5.3.5.1. Das Geräte-Verzeichnis

In jedem IDE-Kanal-Verzeichnis befindet sich ein Geräte-Verzeichnis. Der Name des Geräte-Verzeichnisses entspricht dem Laufwerksbuchstaben im /dev-Verzeichnis. So ist z.B. das erste IDE-Laufwerk in ide0 hda.

AnmerkungAnmerkung
 

Für jedes dieser Geräte-Verzeichnisse gibt es einen symbolischen Link zum /proc/ide/ Verzeichnis.

Jedes Geräte-Verzeichnis enthält eine Sammlung von Informationen und Statistiken. Der Inhalt dieser Verzeichnisse verändert sich je nach angesprochenem Gerät. Einige der wichtigen Dateien, die bei verschiedenen Geräten vorhanden sind, umfassen unter anderem:

  • cache — Der Geräte-Cache.

  • capacity — Die Kapazität des Gerätes in 512 Byte Blöcken.

  • driver — Treiber und Treiberversion, die benutzt wird, um das Gerät anzusprechen.

  • geometry — Physische und logische Geometrie des Gerätes.

  • media — Der Geräte-Typ, wie zum Beispiel disk

  • model — Modellname oder Nummer des Gerätes

  • settings — Eine Liste von aktuellen Parametern des Gerätes. Diese Datei enthält normalerweise einige wissenswerte, technische Informationen. Eine beispielhafte settings Datei für eine Standard IDE-Festplatte sieht so aus:

    name                value          min          max          mode
    ----                -----          ---          ---          ----
    bios_cyl            784            0            65535        rw
    bios_head           255            0            255          rw
    bios_sect           63             0            63           rw
    breada_readahead    4              0            127          rw
    bswap               0              0            1            r
    current_speed       66             0            69           rw
    file_readahead      0              0            2097151      rw
    ide_scsi            0              0            1            rw
    init_speed          66             0            69           rw
    io_32bit            0              0            3            rw
    keepsettings        0              0            1            rw
    lun                 0              0            7            rw
    max_kb_per_request  64             1            127          rw
    multcount           8              0            8            rw
    nice1               1              0            1            rw
    nowerr              0              0            1            rw
    number              0              0            3            rw
    pio_mode            write-only     0            255          w
    slow                0              0            1            rw
    unmaskirq           0              0            1            rw
    using_dma           1              0            1            rw

5.3.6. /proc/irq/

Dieses Verzeichnis wird benutzt, um IRQ zu CPU Verbindungen einzustellen. Dies erlaubt Ihnen, einen IRQ nur einer CPU zuzuweisen. Sie können eine CPU aber z.B. auch vom IRQ-Handling entbinden.

Jeder IRQ hat ein eigenes Verzeichnis, was die individuelle Konfiguration jedes IRQ ermöglicht. Die Datei /proc/irq/prof_cpu_mask ist eine Bitmaske, die die Standardwerte für die Datei smp_affinity im IRQ-Verzeichnis enthält. Die Werte in smp_affinity legen fest, welche CPUs diesen IRQ bearbeiten.

Weitere Informationen zum Verzeichnis /proc/irq/ finden Sie unter
/usr/src/linux-2.4/Documentation/filesystems/proc.txt

5.3.7. /proc/net/

Dieses Verzeichnis bietet einen weitgehenden Einblick in verschiedene Netzwerk-Parameter und -Statistiken. Jede Datei deckt einen bestimmten Informationsbereich zum Systemnetzwerkbereich ab. Es folgt eine Teilliste dieser virtuellen Dateien:

5.3.8. /proc/scsi/

Dieses Verzeichnis ist analog zum Verzeichnis /proc/ide, kann aber nur für verbundene SCSI-Geräte verwendet werden.

Die wichtigste Datei hier ist /proc/scsi/scsi, welche eine Liste mit allen erkannten SCSI-Geräten enthält. Aus dieser Auflistung können Sie den Typ des Gerätes, den Modell-Namen, den Hersteller und die SCSI Kanal/ID-Daten abrufen.

Wenn ein System zum Beispiel ein SCSI CD-ROM, ein Bandlaufwerk, Festplatten und einen RAID-Controller beinhaltet, könnte die Datei ähnlich wie in diesem Beispiel aussehen:

Attached devices: 
Host: scsi1 Channel: 00 Id: 05 Lun: 00
  Vendor: NEC      Model: CD-ROM DRIVE:466 Rev: 1.06
  Type:   CD-ROM                           ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 06 Lun: 00
  Vendor: ARCHIVE  Model: Python 04106-XXX Rev: 7350
  Type:   Sequential-Access                ANSI SCSI revision: 02
Host: scsi2 Channel: 00 Id: 06 Lun: 00
  Vendor: DELL     Model: 1x6 U2W SCSI BP  Rev: 5.35
  Type:   Processor                        ANSI SCSI revision: 02
Host: scsi2 Channel: 02 Id: 00 Lun: 00
  Vendor: MegaRAID Model: LD0 RAID5 34556R Rev: 1.01
  Type:   Direct-Access                    ANSI SCSI revision: 02

Jeder SCSI-Treiber, der vom System benutzt wird, hat ein eigenes Verzeichnis in /proc/scsi, welches spezifische Dateien für jeden Controller enthält. Für unser Beispiel oben gibt es also die Verzeichnisse aic7xxx und megaraid, da diese beiden Treiber benutzt werden. Die Dateien in diesen beiden Unterverzeichnissen beinhalten typischerweise I/O Adressbereiche, IRQ-Informationen und Statistiken für den SCSI-Controller, der den Treiber benutzt. Jeder Controller liefert Informationen in verschiedener Größe und Art. Der Adaptec AIC-7880 Ultra SCSI Hostadapter in unserem Beispiel gibt folgende Ausgabe:

Adaptec AIC7xxx driver version: 5.1.20/3.2.4
Compile Options:
  TCQ Enabled By Default : Disabled
  AIC7XXX_PROC_STATS     : Enabled
  AIC7XXX_RESET_DELAY    : 5

Adapter Configuration:
           SCSI Adapter: Adaptec AIC-7880 Ultra SCSI host adapter
                           Ultra Narrow Controller
    PCI MMAPed I/O Base: 0xfcffe000
 Adapter SEEPROM Config: SEEPROM found and used.
      Adaptec SCSI BIOS: Enabled
                    IRQ: 30
                   SCBs: Active 0, Max Active 1,
                         Allocated 15, HW 16, Page 255
             Interrupts: 33726
      BIOS Control Word: 0x18a6
   Adapter Control Word: 0x1c5f
   Extended Translation: Enabled
Disconnect Enable Flags: 0x00ff
     Ultra Enable Flags: 0x0020
 Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 8
    Tagged Queue By Device array for aic7xxx host instance 1:
      {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
    Actual queue depth per device for aic7xxx host instance 1:
      {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

Statistics:


(scsi1:0:5:0)
  Device using Narrow/Sync transfers at 20.0 MByte/sec, offset 15
  Transinfo settings: current(12/15/0/0), goal(12/15/0/0), user(12/15/0/0)
  Total transfers 0 (0 reads and 0 writes)
             < 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
   Reads:       0       0       0       0       0       0       0       0
  Writes:       0       0       0       0       0       0       0       0


(scsi1:0:6:0)
  Device using Narrow/Sync transfers at 10.0 MByte/sec, offset 15
  Transinfo settings: current(25/15/0/0), goal(12/15/0/0), user(12/15/0/0)
  Total transfers 132 (0 reads and 132 writes)
             < 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
   Reads:       0       0       0       0       0       0       0       0
  Writes:       0       0       0       1     131       0       0       0

Dieser Bildschirm zeigt die Transfergeschwindigkeiten zu den verschiedenen SCSI-Geräten, die an den Controller angeschlossen sind, basierend auf der Channel-ID, sowie detaillierte Statistiken zu der Anzahl und Größe der Dateien, die von diesem Gerät gelesen oder geschrieben wurden. Der oben angegebenen Ausgabe entnehmen Sie, dass der Controller mit dem CD-ROM-Laufwerk mit 20 Megabyte pro Sekunde kommuniziert, während das Bandlaufwerk nur mit 10 Megabytes kommuniziert.

5.3.9. /proc/sys/

Das Verzeichnis /proc/sys/ unterscheidet sich von /proc, weil es nicht nur eine Menge Informationen über das System zeigt, sondern auch Administratoren erlaubt, Kerneleigenschaften sofort zu aktivieren oder zu deaktivieren.

WarnungWarnung
 

Versuchen Sie niemals, Ihre Kernel-Einstellungen auf einem Produktionssystem mit den Dateien in /proc/sys zu optimieren. Es kann in manchen Fällen passieren, dass eine Einstellung den Kernel instabil macht und damit ein Neustart erforderlich wird.

Überprüfen Sie daher unbedingt die Korrektheit der Syntax, bevor Sie eine Änderung in /proc/sys vornehmen.

Ob eine Datei konfiguriert werden kann oder nur Informationen liefern soll, findet man am besten heraus, indem man sie über -l an einem Shell-Prompt anzeigt. Wenn die Datei schreibbar ist, können Sie diese zum Konfigurieren des Kernels verwenden. Zum Beispiel sieht eine Auflistung von /proc/sys/fs so aus:

-r--r--r--    1 root     root            0 May 10 16:14 dentry-state
-rw-r--r--    1 root     root            0 May 10 16:14 dir-notify-enable
-r--r--r--    1 root     root            0 May 10 16:14 dquot-nr
-rw-r--r--    1 root     root            0 May 10 16:14 file-max
-r--r--r--    1 root     root            0 May 10 16:14 file-nr

Hier sind die Dateien dir-notify-enable und file-max schreibbar und können deshalb benutzt werden, um den Kernel zu konfigurieren. Die anderen Dateien geben nur Informationen zu den aktuellen Einstellungen des Kernels aus.

Ein Wert in einer Datei in /proc/sys wird geändert, indem der neue Wert in diese Datei geschrieben wird. Zum Beispiel benutzt man, um den System Request Key in einem laufenden Kernel zu aktivieren, folgenden Befehl:

echo 1 > /proc/sys/kernel/sysrq

Dies ändert den Wert der Datei sysrq von 0 (off) auf 1 (on).

Der Sinn des System Request Key ist es, Ihnen zu erlauben, dem Kernel direkte Anweisungen mit einer simplen Tastenkombination zu geben, um den Rechner z.B. direkt herunter zu fahren, das System neu zu starten, alle Dateisystempuffer zu schreiben oder wichtige Informationen auf Ihre Konsole zu schreiben. Dieses Feature ist sehr sinnvoll, wenn Sie einen Development Kernel benutzen, oder Systemeinfrieren beobachten. Da sie jedoch für unbewachte Konsolen ein Sicherheitsrisiko darstellt, wird dies standardmäßig unter Red Hat Linux ausgeschaltet.

Weitere Informationen zum System Request Key finden Sie unter /usr/src/linux-2.4/Documentation/sysrq.txt.

Einige Konfigurations-Dateien in /proc/sys enthalten mehr als einen Wert. Um neue Werte in solchen Dateien zu speichern, müssen Sie ein Leerzeichen zwischen jeden Wert setzen, den Sie übergeben. Sehen Sie die Anwendung mit dem Befehl echo hier:

echo 4 2 45 > /proc/sys/kernel/acct

AnmerkungAnmerkung
 

Konfigurationsänderungen, die Sie mit echo vornehmen gehen automatisch verloren, wenn das System neu gestartet wird. Um Ihre Konfigurations-Änderungen nach dem Booten wirksam werden zu lassen, lesen Sie bitte Abschnitt 5.4.

Das Verzeichnis /proc/sys enthält verschiedene Unterverzeichnisse, die verschiedene Bereiche des laufenden Kernel kontrollieren.

5.3.9.1. /proc/sys/dev/

Dieses Verzeichnis bietet Optionen für bestimmte Geräte im System an. Viele Systeme haben mindestens zwei Verzeichnisse: cdrom und raid, aber benutzerdefinierte Kernel können andere Verzeichnisse haben, wie z.B. parport, das es ermöglicht, den parallelen Port zwischen mehreren Treibern zu teilen.

Das cdrom Verzeichnis enthält eine Datei namens info, die einige wichtige CD-ROM-Parameter ausgibt:

CD-ROM information, Id: cdrom.c 3.12 2000/10/18

drive name:		hdc
drive speed:		32
drive # of slots:	1
Can close tray:		1
Can open tray:		1
Can lock tray:		1
Can change speed:	1
Can select disk:	0
Can read multisession:	1
Can read MCN:		1
Reports media changed:	1
Can play audio:		1
Can write CD-R:		0
Can write CD-RW:	0
Can read DVD:		0
Can write DVD-R:	0
Can write DVD-RAM:	0

Diese Datei kann benutzt werden, um die Fähigkeiten einer unbekannten CD-ROM herauszufinden. Wenn mehrere Laufwerke vorhanden sind, hat jedes Gerät seine eigene Informationsspalte.

Verschiedene Dateien in /proc/sys/dev/cdrom, wie z.B. autoclose und checkmedia, können benutzt werden, um das CD-ROM Laufwerk einzustellen. Mit dem Befehl echo können Sie ein Feature aktivieren oder deaktivieren.

Wenn RAID-Unterstützung in den Kernel integriert wurde, ist ein Verzeichnis /proc/sys/dev/raid mit mindestens zwei Dateien vorhanden: speed_limit_min und speed_limit_max. Diese Einstellungen legen die Beschleunigung eines RAID Gerät für besonders I/O intensive Aufgaben, wie z.B. beim Synchronisieren von Festplatten, fest.

5.3.9.2. /proc/sys/fs/

Dieses Verzeichnis enthält eine Liste von Optionen und Informationen zu verschiedenen Einstellungen des Dateisystem, inklusive Quoten, Datei-Handles, Inoden und dentry-Informationen.

Das Verzeichnis binfmt_misc wirt benutzt, um Kernel Support für verschiedene Binär-Formate anzubieten.

Die wichtigen Dateien im Verzeichnis /proc/sys/fs sind:

  • dentry-state — Zeigt den Status des Verzeichnis-Caches an. Diese Datei sieht so ähnlich wie diese aus:

    57411	52939	45	0	0	0

    Die erste Zahl zeigt die Gesamtzahl der Verzeichnis-Cache Einträge an, die zweite Zahl zeigt die Anzahl der nicht benutzten Einträgen an. Die dritte Zahl zeigt die Sekunden zwischem dem Löschen und dem erneuten Aufnehmen eines Verzeichnisses an. Die vierte misst die Seiten, die gerade vom System angefordert werden. Die letzten zwei Zahlen werden nicht benutzt und zeigen nur Nullen an.

  • dquot-nr — Zeigt die maximale Anzahl von zwischengespeicherten Quoten-Einträgen an.

  • file-max — Erlaubt es, die maximale Anzahl von Datei-Handles, die der Kernel zuweist, zu ändern. Diesen Wert zu ändern kann Fehler lösen, die beim Zuweisen von Datei-Handles entstehen können.

  • file-nr — Zeigt die Anzahl zugewiesener, benutzter, und die maximale Anzahl der Datei-Handles an.

  • overflowgid und overflowuid — Definiert die feste Benutzer- und Gruppen-ID, falls das System nur 16-bit Gruppen- und Benutzer-IDs unterstützt.

  • super-max — Kontrolliert die maximal verfügbare Anzahl von Superblöcken.

  • super-nr — Zeigt die aktuelle Anzahl der benutzten Superblöcke an.

5.3.9.3. /proc/sys/kernel/

Dieses Verzeichnis enthält eine Vielzahl von verschiedenen Konfigurationsdateien, die direkt die Kernelfunktion beeinflussen. Einige der wichtigsten Dateien sind unter anderem:

  • acct — Kontrolliert die Aufhebung von Prozess Accounting, basierend auf der Prozentzahl des verfügbaren freien Speichers, der auf dem Dateisystem, das den Log enthält, verfügbar ist. Dieser Log sieht gewöhnlich so aus:

    4	2	30

    Der zweite Wert setzt den Schwellenwert des freien Speichers, wenn das Logging unterbrochen werden soll; der erste Wert hingegen zeigt den Wert an, wann das Logging wieder aufgenommen werden soll. Der dritte Wert zeigt das Intervall in Sekunden, in dem der Kernel das Dateisystem abfragt, um zu entscheiden, ob das Logging wieder aufgenommen oder unterbrochen werden soll.

  • cap-bound — Kontrolliert die Capability Bounding Einstellungen. Diese bieten eine Liste von Möglichkeiten, die jeder Prozess auf dem System benutzten kann. Wenn eine Möglichkeit hier nicht aufgelistet ist, dann kann kein Prozess, egal mit welchen Privilegien, diese benutzen. Dies macht das System dadurch, dass bestimmte Dinge nicht ausgeführt werden können, sicherer (wenigstens nach einem bestimmten Punkt im Boot-Prozess nicht).

    Eine Liste gültiger Werte für diese virtuelle Datei finden Sie unter /usr/src/linux-2.4/include/linux/capability.h. Weitere Informationen zum Capability Bonding finden Sie unter: http://lwn.net/1999/1202/kernel.php3.

  • ctrl-alt-del — Stellt ein, ob die Tastenkombination [Strg]-[Alt]-[Entf] den Rechner mittels des init Befehls (Wert 0) neu startet oder einen sofortigen Neustart ohne Puffer-Synchronisation vornimmt; (Wert 1).

  • domainname — Erlaubt es, den Domainnamen des Systems zu konfigurieren, wie z.B. example.com.

  • hostname — Erlaubt es, den Hostnamen des Systems zu konfigurieren, wie z.B. www.example.com.

  • hotplug — Konfiguriert das Programm, welches benutzt wird, wenn eine Konfigurationsänderung vom System erkannt wird. Dies wird vor allem mit dem USB und dem Cardbus PCI benutzt. Der Standardwert /sbin/hotplug sollte nicht geändert werden, außer wenn Sie ein neues Programm testen, dass diese Rolle ausfüllt.

  • modprobe — Stellt den Ort des Programms ein, das Kernel-Module bei Bedarf lädt. Der Standardwert von /sbin/modprobe zeigt an, dass kmod dieses Programm aufruft, wenn ein Kernel Thread kmod aufruft, um ein Modul zu laden.

  • msgmax — Setzt die maximale Größe von gesendeten Mitteilungen von einem Prozess zum anderen (Standardwert: 8192 Bytes). Mit dem Erhöhen dieses Wertes sollten Sie vorsichtig sein, weil zwischengespeicherte Werte in nicht auslagerbarem Kernel-Speicher abgelegt werden, und jede Erhöhung in msgmax die RAM-Erfordernisse im System erhöhen.

  • msgmnb — Setzt die maximale Anzahl von Bytes in einer einzelnen Mitteilungs-Queue. Standard ist hier 16384.

  • msgmni — Setzt die maximale Anzahl von Mitteilungs-Queue-IDs. Standard ist 16.

  • osrelease — Listet die Linux-Kernel Releasenummer auf. Diese Datei kann nur durch Neuübersetzung und Neukompilierung des Kernels verändert werden.

  • ostype — Zeigt den Typ des Betriebssystems an. Diese Datei zeigt normalerweise Linux an; dieser Wert kann nur durch Ändern der Kernel-Quellen und Neukompilieren geändert werden.

  • overflowgid und overflowuid — Definiert die feste Gruppen- und Benutzer-ID, die für Systemaufrufe bei Architekturen, die nur 16-bit Gruppen- und Benutzer-IDs unterstützen, benutzt werden.

  • panic — Definiert die Anzahl von Sekunden, um die der Kernel den Neustart verschiebt, wenn ein "Kernel-Panik" auftritt. Dieser Wert steht normal auf 0, was einen automatischen Neustart nach einer "Kernel-Panik" deaktiviert.

  • printk — Diese Datei kontrolliert eine Vielzahl von Einstellungen zum Anzeigen und Loggen von Fehlermitteilungen. Jede Fehlermeldung vom Kernel hat einen loglevel, der die Wichtigkeit der Mitteilung wiedergibt. Die Loglevel-Werte teilen sich wie folgt auf:

    • 0 — Ein Kernel Notfall. Das System ist nicht benutzbar.

    • 1 — Kernel-Alarm, es müssen sofort Gegenmaßnahmen eingeleitet werden.

    • 2 — Der Kernel ist in kritischem Zustand.

    • 3 — Allgemeiner Kernel-Fehler.

    • 4 — Allgemeine Kernel-Warnung.

    • 5 — Kernel-Mitteilung zu einem normalen, jedoch ernstzunehmendem Zustand.

    • 6 — Kernel Informations-Mitteilung.

    • 7 — Kernel Debugging-Mitteilung.

    Vier Werte finden sich in der Datei printk:

    6	4	1	7

    Jede dieser Werte definiert eine andere Regel zum Verarbeiten von Fehlermeldungen. Der erste Wert, Konsolen Loglevel genannt, definiert die niedrigste Priorität von Mitteilungen, die auf die Konsole ausgegeben werden (je niedriger die Priorität, desto höher die Loglevel-Nummer). Der zweite Wert setzt den Standart-Loglevel für Mitteilungen, welche keinen Loglevel gesetzt haben. Der dritte Wert setzt den niedrigsten Loglevel Konfigurationswert für den Konsolen Loglevel. Der letzte Wert setzt den Standardwert für den Konsolen-Loglevel.

  • rtsig-max — Konfiguriert die maximale Anzahl an POSIX-Echtzeitsignalen, die das System gespeichert haben kann. Der Standardwert ist: 1024.

  • rtsig-nr — Die aktuelle Anzahl von POSIX-Echzeitsignalen, die zur Zeit vom Kernel zwischengespeichert werden.

  • sem — Diese Datei konfiguriert die Semaphore-Einstellungen im Kernel. Eine semaphore ist ein System V IPC-Objekt, das benutzt wird, um den Einsatz eines bestimmten Prozesses zu überwachen.

  • shmall — Zeigt den Gesamtwert des gemeinsam verwendeten Speichers in Bytes an, der gleichzeitig im System benutzt werden kann. Dieser Wert ist normalerweise: 2097152.

  • shmmax — Stellt die größte Speichersegmentgröße in Bytes ein, die vom Kernel erlaubt wird. Dieser Wert ist normalerweise 33554432. Der Kernel unterstützt allerdings viel größere Werte.

  • shmmni — Stellt die maximale Anzahl von gemeisam genutzten Speichersegmenten für das ganze System ein. Dieser Wert hat den Standardwert 4096.

  • sysrq — Aktiviert den System Request Key, wenn dieser Wert nicht auf das standardmäßige 0 gesetzt ist. Einzelheiten zum System Request Key finden Sie unter Abschnitt 5.3.9.

  • threads-max — Stellt die maximale Anzahl von Threads, die vom Kernel genutzt werden können, ein. Standardwert: 4095.

  • version — Zeigt Datum und Zeit der letzten Kernel-Kompilierung an. Das erste Feld in dieser Datei, wie z.B. #3 zeigt an, wie oft ein Kernel aus den Quellen neukompiliert wurde.

Das Verzeichnis random speichert eine Anzahl von Werten, die zum Erzeugen von Zufallszahlen im Kernel verwendet werden.

5.3.9.4. /proc/sys/net/

Dieses Verzeichnis enthält Unterverzeichnisse über verschiedene Netzwerk-Themen. Verschiedene Konfigurationen zur Kernel-Kompilierung erzeugen hier verschiedene Verzeichnisse, wie z.B. appletalk, ethernet, ipv4, ipx und ipv6. In diesen Verzeichnissen können Sie verschiedene Netzwerk-Einstellungen für diese Konfiguration am laufenden System ändern.

Aufgrund den vielfältigen Netzwerk-Optionen, die in Linux verwendet werden können, werden wir nur die wichtigsten Verzeichnisse in /proc/sys/net vorstellen.

Das Verzeichnis /proc/sys/net/core/ enthält eine Vielzahl von Einstellungen, die die Interaktion zwischen Kernel und Netzwerkschichten beeinflussen. Die wichtigsten Dateien sind hier:

  • message_burst — Die Anzahl Zehntelsekunden, die benötigt werden, um eine neue Warnungsmitteilung zu schreiben. Das wird benutzt, um Denial of Service (DoS) Angriffe zu vermeiden; die Standardeinstellung ist: 50.

  • message_cost — Wird auch verwendet, um DoS Angriffe zu vermeiden, indem ein Cost-Faktor auf jede Warnung gesetzt wird. Je höher der Wert dieser Datei (Standard ist 5), desto eher wird die Warnung ignoriert.

    Eine DoS-Attacke bedeutet, dass ein Angreifer Ihr System mit Anfragen überhäuft, die Fehler erzeugen und ihre Diskpartitionen mit Logdateien füllen oder Ihre Systemressourcen zum Fehlerloggen verbrauchen. Die Einstellungen in message_burst und message_cost sind dazu da, ein Gleichgewicht zwischen gutem Logging und einem geringen Risiko einzustellen.

  • netdev_max_backlog — Setzt die maximale Nummer von Paketen, die in die Warteschlange gestellt werden, wenn eine Schnittstelle Pakete schneller empfängt, als der Kernel diese verarbeiten kann. Der Standardwert hier ist: 300.

  • optmem_max — Konfiguriert die maximale zusätzliche Puffergröße pro Socket.

  • rmem_default — Setzt die Standardgröße für den Empfangspuffer in Byte.

  • rmem_max — Setzt die Maximalgröße des Empfangspuffers in Byte.

  • wmem_default — Setzt die Standardgröße für den Sendepuffer in Byte.

  • wmem_max — Setzt die Maximalgröße für den Sendepuffer in Byte.

Das Verzeichnis /proc/sys/net/ipv4/ enthält weitere Netzwerkeinstellungen. Viele dieser Einstellungen, die zusammen verwendet werden, sind sehr hilfreich bei der Verhinderung von Angriffen auf das System oder bei der Verwendung des Systems als Router.

AchtungAchtung
 

Eine irrtümliche Änderung dieser Dateien kann die Netzwerkverbindungen beeinträchtigen.

Einige der wichtigsten Dateien im Verzeichnis /proc/sys/net/ipv4:

  • icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate und icmp_timeexeed_rate — Stellt die maximale ICMP Send-Paket Rate in 1/100 Sekunden (bei Intel Systemen) an Hosts unter verschiedenen Bedingungen ein. Eine Einstellung von 0 entfernt alle Verzögerungen und sollte nicht eingestellt werden.

  • icmp_echo_ignore_all und icmp_echo_ignore_broadcasts — Erlaubt dem Kernel, ICMP ECHO Pakete von allen Hosts oder nur solche von Broadcast- oder Multicast-Adressen zu ignorieren. Eine 0 erlaubt dem Kernel zu antworten, eine 1 ignoriert diese Pakete.

  • ip_default_ttl — Stellt die Standard Time To Live (TTL) ein, die die Anzahl von Sprüngen limitiert, bevor ein Paket sein Ziel erreicht. Eine Erhöhung dieses Wertes kann unter Umständen die Systemleistung beeinträchtigen.

  • ip_forward — Erlaubt Schnittstellen im System, Pakete zu einer anderen weiterzuleiten. Standardmäßig ist diese Datei auf 0 gesetzt, um das Weiterleiten auszuschalten. Eine 1 aktiviert die Paketweiterleitung.

  • ip_local_port_range — legt die Ports fest, die von TCP oder UDP benutzt werden, wenn ein lokaler Port gebraucht wird. Die erste Zahl ist der niedrigste Port und die zweite Zahl steht für den höchsten benutzten Port. Jedes System, für das erwartet wird, dass es mehr als die Standard Ports 1024 bis 4999 benötigt, sollte die Werte 32768 bis 61000 verwenden.

  • tcp_syn_retries — Bietet eine Grenze dafür an, wie oft Ihr System ein SYN Paket versucht zu übertragen, wenn eine Verbindung versucht wird.

  • tcp_retries1 — Stellt die Anzahl von zugelassenen Neu-Übertragungen ein, wenn versucht wird einer eingehenden Verbindung zu antworten. Standardwert ist hier 3.

  • tcp_retries2 — Stellt die Anzahl von erlaubten Neu-Übertragungen von TCP Paketen ein. Standardwert ist 15.

Die Datei /usr/src/linux-2.4/Documentation/networking/ip-sysctl.txt enthält eine komplette Liste der im Verzeichnis /proc/sys/net/ipv4/ verfügbaren Dateien und Optionen.

Eine Anzahl anderer Verzeichnisse in /proc/sys/net/ipv4 behandeln spezifische Inhalte. Das Verzeichnis /proc/sys/net/ipv4/conf/ erlaubt jeder der Systemschnittstellen eine unterschiedliche Konfiguration und lässt Standard Werte für nicht-konfigurierte Schnittstellen (im Unterverzeichnis /proc/sys/net/ipv4/conf/default/), und Einstellungen, die alle anderen Konfigurationen überschreiben (im Verzeichnis /proc/sys/net/ipv4/conf/all/), zu.

Um Verbindungen zwischen direkten Nachbarn (hier jedes andere System, das direkt an das System angeschlossen ist) zu überwachen, bietet das Verzeichnis /proc/sys/net/ipv4/neigh/ (steht für neighbors) spezielle Konfigurationen für jede Schnittstelle an. Das erlaubt Ihnen, Systeme denen Sie aufgrund ihrer örtlichen Nähe mehr vertrauen, anders zu behandeln. Es macht es gleichzeitig aber auch möglich, örtlich entfernte Systeme mit festen Regeln zu belegen.

Das Routen über IPV4 besitzt auch ein eigenes Verzeichnis /proc/sys/net/ipv4/route/. Im Gegensatz zu conf und neigh, enthält das /proc/sys/net/ipv4/route/ Verzeichnis Spezifikationen, die das Routing auf allen Systemschnittstellen beeinflusst. Viele dieser Einstellungen, wie z.B. max_size, max_delay und min_delay, hängen mit der Einstellung des Routing Caches zusammen. Um den Routing Cache zu löschen, schreiben Sie einen beliebigen Inhalt in die Datei flush.

Zusätzliche Informationen über diese Verzeichnisse und die möglichen Werte zur Konfiguration finden Sie unter /usr/src/linux-2.4/Documentation/filesystems/proc.txt.

5.3.9.5. /proc/sys/vm/

Dieses Verzeichnis erleichtert die Konfiguration des virtuellen Speicher-Subsystems des Linux Kernels (VM). Der Kernel macht ausgiebigen und intelligenten Gebrauch von virtuellem Speicher, der auch Swap-Speicher genannt wird.

Die folgenden Dateien findet man normalerweise im Verzeichnis /proc/sys/vm/:

  • bdflush — Setzt verschiedene Werte, in Bezug auf den bdflush Kernel-Daemon.

  • buffermem — Erlaubt es Ihnen, den Wert des gesamten System-Speichers einzustellen, der zum Puffern verwendet wird. Eine typische Ausgabe dieser Datei sieht wie folgt aus:

    2       10       60

    Die ersten und letzten Werte setzen den minimalen und maximalen Prozentsatz des Speichers, der als Pufferspeicher verwendet wird. Der mittlere Wert setzt den Prozentsatz von Systemspeicher, der als Puffer verwendet wird, ab dem das Memory Management anfängt, Puffer mehr als andere Speichertypen zu löschen, um Speichermangel auszugleichen.

  • kswapd — Stellt verschiedene Werte, in Zusammenhang mit dem Kernel-Swap-Daemon ein; kswapd. Diese Datei hat drei Werte:

    512	32	8

    Der erste Wert setzt die maximale Anzahl von Seiten, die kswapd in einem Versuch zu löschen versucht. Je größer diese Zahl, desto schneller kann der Kernel auf freie Seiten zurückgreifen. Der zweite Wert setzt die minimale Anzahl von Versuchen, die kswapd versucht, eine Seite zu löschen. Der dritte Wert setzt die Anzahl von Seiten, die kswapd in einem Versuch zu schreiben versucht. Ein richtiges Einstellen des letzten Wertes kann die Systemleistung auf Kosten einer Menge Swap-Platzes erhöhen, indem der Kernel Seiten in großen Blöcken schreibt und dabei die Anzahl der Plattenzugriffe verringert.

  • max_map_count — Konfiguriert die maximale Anzahl von Speicher-Map-Bereichen, die ein Prozess haben darf. In den meisten Fällen ist ein Standardwert von 65536 angemessen.

  • overcommit_memory — wenn dies auf den Standardwert von 0 gesetzt ist, schätzt der Kernel einen verfügbaren Speicherumfang und lässt Anfragen scheitern, die eindeutig ungültig sind. Da bei der Speicherzuordnung eher ein heuristischer als ein genauer Algorithmus verwendet wird, kann es manchmal zu einer Überlastung des Systems kommen.

    Wenn overcommit_memory auf 1 gesetzt ist, erhöht sich die Wahrscheinlichkeit einer Systemüberlastung. Das gleiche gilt für die Durchführung von speicherintensiven Aufgaben, wie die, die von einigen wissenschaftlichen Softwareprogrammen verwendet werden.

    Für Kunden, die ein geringeres Risiko einer Systemüberladung eingehen wollen, wurden folgende zwei Optionen hinzugefügt. Setzt man overcommit_memory auf 2 schlägt dies fehl, wenn eine Speicheranfrage mehr als die Hälfte des physischen RAM plus Swap ausmacht. Beim Setzen auf 3 scheitert dies, wenn eine Speicheranfrage größer ist, als Swap alleine fassen kann.

  • pagecache — Stellt die Menge von Speicher ein, die vom Seiten-Cache verwendet wird. Die Werte in pagecache sind Prozentsätze, und funktionieren ähnlich wie in buffermem um die minimale und maximale Anzahl von verfügbarem Seiten-Cache zu erzwingen.

  • page-cluster — Stellt die Anzahl von Seiten, die auf einmal gelesen werden sollen, ein. Der Standardwert 4, der sich eigentlich auf 16 Seiten bezieht, reicht für die meisten Systeme aus.

  • pagetable_cache — Stellt die Anzahl von Seiten ein, die auf Pro-Prozessor Basis zwischengespeichert werden, ein. Der erste und zweite Wert beziehen sich auf die minmale und die maximale Anzahl von Seitentabellen.

Zusätzliche Informationen hierzu finden Sie in /usr/src/linux-2.4/Documentation/sysctl/vm.txt.

5.3.10. /proc/sysvipc/

Dieses Verzeichnis enthält Informationen über die System V IPC-Ressourcen. Die Dateien in diesem Verzeichnis hängen mit den System V IPC-Aufrufen zusammen (msg), Semaphores (sem) und gemeinsam benutzter Speicher (shm).

5.3.11. /proc/tty/

Dieses Verzeichnis enthält Informationen über die verfügbaren und zur Zeit benutzten TTY-Geräte im System. Früher teletype device genannt, werden heute alle Buchstaben-orientierten Daten Terminals als TTY-Geräte bezeichnet.

Unter Linux gibt es drei verschiedene Arten von TTY-Geräten. Serielle Geräte werden mit seriellen Verbindungen benutzt, wie z.B. mit Modems oder seriellen Kabeln. Virtuelle Terminals erzeugen die normalen Konsolenverbindungen, wie die virtuellen Konsolen, die verfügbar sind, wenn Sie [Alt]-[<F-key>] auf einer Systemkonsole drücken. Pseudo Terminals erzeugen eine zwei-Wege Kommunikation, die von einigen höherrangigen Applikationen, wie z.B. XFree86 verwendet werden.

Die Datei drivers enthält eine Liste der TTY-Geräte, die zur Zeit benutzt werden:

serial               /dev/cua        5  64-127 serial:callout
serial               /dev/ttyS       4  64-127 serial
pty_slave            /dev/pts      136   0-255 pty:slave
pty_master           /dev/ptm      128   0-255 pty:master
pty_slave            /dev/ttyp       3   0-255 pty:slave
pty_master           /dev/pty        2   0-255 pty:master
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
/dev/ptmx            /dev/ptmx       5       2 system
/dev/console         /dev/console    5       1 system:console
/dev/tty             /dev/tty        5       0 system:/dev/tty
unknown              /dev/vc/%d      4    1-63 console

Die Datei /proc/tty/driver/serial listet die Nutzungs-Statistik und den Status jedes der seriellen TTY-Geräte auf.

Damit TTY-Geräte ähnlich wie Netzwerk-Geräte benutzt werden können, stellt der Kernel line discipline für das Gerät ein. Das erlaubt dem Treiber, einen bestimmten Headertyp mit jedem Datenblock, der über das Gerät geht, zu transferieren; dieser Header macht das Paket zu einem Paket in einem Stream. SLIP und PPP sind allgemein bekannte Line Disciplines und werden vor allem benutzt, um Systeme über eine serielle Verbindung zu koppeln.

Registrierte Line Disciplines werden in der Datei ldiscs gespeichert; detaillierte Informationen finden Sie im Verzeichnis ldisc.