Niveau : Admin Junior	Numéro de la Leçon	Dernière Modification
skill>2/4	<progrecss 11/12 style=inline />

Gestion des Paramètres du Matériel et les Ressources

Fichiers Spéciaux

Dans l'ordinateur les périphériques sont reliés à un contrôleur qui communique avec le processeur à l'aide d'un bus. Le contrôleur ainsi que les périphériques nécessitent des pilotes. Sous Linux, les pilotes sont généralement fournis sous la forme d'un module. Chaque périphérique est représenté par un fichier spécial dans le répertoire /dev et c'est dans ce fichier que le système trouve les informations nécessaires pour s'adresser au pilote.

Consultez le contenu du répertoire /dev :

opensuse:~ # ls -l /dev
total 0
drwxr-xr-x 2 root root 60 Apr 9 14:54 .mount
drwxr-xr-x 3 root root 60 Apr 9 14:54 .sysconfig
drwxr-xr-x 7 root root 160 Apr 9 14:55 .udev
crw-rw----+ 1 root audio 14, 12 Apr 9 14:55 adsp
crw-rw----+ 1 root audio 14, 4 Apr 9 14:55 audio
crw------- 1 root root 10, 235 Apr 9 14:54 autofs
drwxr-xr-x 2 root root 140 Apr 9 14:54 block
prw------- 1 root root 0 Apr 9 14:55 bootsplash
drwxr-xr-x 2 root root 80 Apr 9 14:54 bsg
crw------- 1 root root 10, 234 Apr 9 14:54 btrfs-control
drwxr-xr-x 3 root root 60 Apr 9 14:54 bus
lrwxrwxrwx 1 root root 3 Apr 9 14:54 cdrom -> sr0
drwxr-xr-x 2 root root 3020 Apr 9 15:22 char
crw------- 1 root root 5, 1 Apr 9 14:55 console
lrwxrwxrwx 1 root root 11 Apr 9 14:54 core -> /proc/kcore
drwxr-xr-x 3 root root 80 Apr 9 14:54 cpu
crw------- 1 root root 10, 62 Apr 9 14:54 cpu_dma_latency
drwxr-xr-x 5 root root 100 Apr 9 14:54 disk
drwxr-xr-x 2 root root 60 Apr 9 14:55 dri
crw-rw----+ 1 root audio 14, 3 Apr 9 14:55 dsp
lrwxrwxrwx 1 root root 3 Apr 9 14:54 dvd -> sr0
crw-rw---- 1 root video 29, 0 Apr 9 14:54 fb0
lrwxrwxrwx 1 root root 13 Apr 9 14:54 fd -> /proc/self/fd
crw-rw-rw- 1 root root 1, 7 Apr 9 14:54 full
crw-rw-rw- 1 root root 10, 229 Apr 9 15:22 fuse
crw------- 1 root root 252, 0 Apr 9 14:54 hidraw0
crw------- 1 root root 10, 228 Apr 9 14:54 hpet
prw------- 1 root root 0 Apr 9 14:54 initctl
drwxr-xr-x 4 root root 300 Apr 9 14:54 input
crw-r----- 1 root kmem 1, 2 Apr 9 14:54 kmem
crw------- 1 root root 1, 11 Apr 9 14:54 kmsg
srw-rw-rw- 1 root root 0 Apr 9 14:55 log
brw-rw---- 1 root disk 7, 0 Apr 9 14:54 loop0
brw-rw---- 1 root disk 7, 1 Apr 9 14:54 loop1
brw-rw---- 1 root disk 7, 2 Apr 9 14:54 loop2
brw-rw---- 1 root disk 7, 3 Apr 9 14:54 loop3
brw-rw---- 1 root disk 7, 4 Apr 9 14:54 loop4
brw-rw---- 1 root disk 7, 5 Apr 9 14:54 loop5
brw-rw---- 1 root disk 7, 6 Apr 9 14:54 loop6
brw-rw---- 1 root disk 7, 7 Apr 9 14:54 loop7
drwxr-xr-x 2 root root 60 Apr 9 14:54 mapper
crw------- 1 root root 10, 227 Apr 9 14:54 mcelog
crw-r----- 1 root kmem 1, 1 Apr 9 14:54 mem
crw-rw----+ 1 root audio 14, 0 Apr 9 14:55 mixer
drwxr-xr-x 2 root root 60 Apr 9 14:54 net
crw------- 1 root root 10, 61 Apr 9 14:54 network_latency
crw------- 1 root root 10, 60 Apr 9 14:54 network_throughput
crw-rw-rw- 1 root root 1, 3 Apr 9 14:54 null
crw-r----- 1 root kmem 10, 144 Apr 9 14:54 nvram
crw------- 1 root root 1, 12 Apr 9 14:54 oldmem
crw-r----- 1 root kmem 1, 4 Apr 9 14:54 port
crw------- 1 root root 108, 0 Apr 9 14:54 ppp
crw------- 1 root root 10, 1 Apr 9 14:54 psaux
crw-rw-rw- 1 root tty 5, 2 Apr 9 15:24 ptmx
drwxr-xr-x 2 root root 0 Apr 9 14:54 pts
crw-rw-rw- 1 root root 1, 8 Apr 9 14:54 random
lrwxrwxrwx 1 root root 4 Apr 9 14:54 root -> sda2
lrwxrwxrwx 1 root root 4 Apr 9 14:54 rtc -> rtc0
crw------- 1 root root 254, 0 Apr 9 14:54 rtc0
lrwxrwxrwx 1 root root 3 Apr 9 14:54 scd0 -> sr0
brw-rw---- 1 root disk 8, 0 Apr 9 14:54 sda
brw-rw---- 1 root disk 8, 1 Apr 9 14:54 sda1
brw-rw---- 1 root disk 8, 2 Apr 9 14:54 sda2
brw-rw---- 1 root disk 8, 3 Apr 9 14:54 sda3
crw-rw---- 1 root disk 21, 0 Apr 9 14:54 sg0
crw-rw---- 1 root cdrom 21, 1 Apr 9 14:54 sg1
drwxrwxrwt 2 root root 180 Apr 9 15:23 shm
crw------- 1 root root 10, 231 Apr 9 14:54 snapshot
drwxr-xr-x 3 root root 180 Apr 9 14:55 snd
brw-rw----+ 1 root cdrom 11, 0 Apr 9 14:54 sr0
lrwxrwxrwx 1 root root 4 Apr 9 14:54 stderr -> fd/2
lrwxrwxrwx 1 root root 4 Apr 9 14:54 stdin -> fd/0
lrwxrwxrwx 1 root root 4 Apr 9 14:54 stdout -> fd/1
crw-rw-rw- 1 root tty 5, 0 Apr 9 14:54 tty
crw--w---- 1 root root 4, 0 Apr 9 14:54 tty0
crw-rw---- 1 root tty 4, 1 Apr 9 14:55 tty1
crw--w---- 1 root tty 4, 10 Apr 9 15:22 tty10
crw--w---- 1 root tty 4, 11 Apr 9 14:54 tty11
crw--w---- 1 root tty 4, 12 Apr 9 14:54 tty12
crw--w---- 1 root tty 4, 13 Apr 9 14:54 tty13
crw--w---- 1 root tty 4, 14 Apr 9 14:54 tty14
crw--w---- 1 root tty 4, 15 Apr 9 14:54 tty15
crw--w---- 1 root tty 4, 16 Apr 9 14:54 tty16
crw--w---- 1 root tty 4, 17 Apr 9 14:54 tty17
crw--w---- 1 root tty 4, 18 Apr 9 14:54 tty18
crw--w---- 1 root tty 4, 19 Apr 9 14:54 tty19
crw-rw---- 1 root tty 4, 2 Apr 9 14:55 tty2
crw--w---- 1 root tty 4, 20 Apr 9 14:54 tty20
crw--w---- 1 root tty 4, 21 Apr 9 14:54 tty21
crw--w---- 1 root tty 4, 22 Apr 9 14:54 tty22
crw--w---- 1 root tty 4, 23 Apr 9 14:54 tty23
crw--w---- 1 root tty 4, 24 Apr 9 14:54 tty24
crw--w---- 1 root tty 4, 25 Apr 9 14:54 tty25
crw--w---- 1 root tty 4, 26 Apr 9 14:54 tty26
crw--w---- 1 root tty 4, 27 Apr 9 14:54 tty27
crw--w---- 1 root tty 4, 28 Apr 9 14:54 tty28
crw--w---- 1 root tty 4, 29 Apr 9 14:54 tty29
crw-rw---- 1 root tty 4, 3 Apr 9 14:55 tty3
crw--w---- 1 root tty 4, 30 Apr 9 14:54 tty30
crw--w---- 1 root tty 4, 31 Apr 9 14:54 tty31
crw--w---- 1 root tty 4, 32 Apr 9 14:54 tty32
crw--w---- 1 root tty 4, 33 Apr 9 14:54 tty33
crw--w---- 1 root tty 4, 34 Apr 9 14:54 tty34
crw--w---- 1 root tty 4, 35 Apr 9 14:54 tty35
crw--w---- 1 root tty 4, 36 Apr 9 14:54 tty36
crw--w---- 1 root tty 4, 37 Apr 9 14:54 tty37
crw--w---- 1 root tty 4, 38 Apr 9 14:54 tty38
crw--w---- 1 root tty 4, 39 Apr 9 14:54 tty39
crw-rw---- 1 root tty 4, 4 Apr 9 14:55 tty4
crw--w---- 1 root tty 4, 40 Apr 9 14:54 tty40
crw--w---- 1 root tty 4, 41 Apr 9 14:54 tty41
crw--w---- 1 root tty 4, 42 Apr 9 14:54 tty42
crw--w---- 1 root tty 4, 43 Apr 9 14:54 tty43
crw--w---- 1 root tty 4, 44 Apr 9 14:54 tty44
crw--w---- 1 root tty 4, 45 Apr 9 14:54 tty45
crw--w---- 1 root tty 4, 46 Apr 9 14:54 tty46
crw--w---- 1 root tty 4, 47 Apr 9 14:54 tty47
crw--w---- 1 root tty 4, 48 Apr 9 14:54 tty48
crw--w---- 1 root tty 4, 49 Apr 9 14:54 tty49
crw-rw---- 1 root tty 4, 5 Apr 9 14:55 tty5
crw--w---- 1 root tty 4, 50 Apr 9 14:54 tty50
crw--w---- 1 root tty 4, 51 Apr 9 14:54 tty51
crw--w---- 1 root tty 4, 52 Apr 9 14:54 tty52
crw--w---- 1 root tty 4, 53 Apr 9 14:54 tty53
crw--w---- 1 root tty 4, 54 Apr 9 14:54 tty54
crw--w---- 1 root tty 4, 55 Apr 9 14:54 tty55
crw--w---- 1 root tty 4, 56 Apr 9 14:54 tty56
crw--w---- 1 root tty 4, 57 Apr 9 14:54 tty57
crw--w---- 1 root tty 4, 58 Apr 9 14:54 tty58
crw--w---- 1 root tty 4, 59 Apr 9 14:54 tty59
crw-rw---- 1 root tty 4, 6 Apr 9 14:55 tty6
crw--w---- 1 root tty 4, 60 Apr 9 14:54 tty60
crw--w---- 1 root tty 4, 61 Apr 9 14:54 tty61
crw--w---- 1 root tty 4, 62 Apr 9 14:54 tty62
crw--w---- 1 root tty 4, 63 Apr 9 14:54 tty63
crw--w---- 1 root root 4, 7 Apr 9 14:54 tty7
crw--w---- 1 root tty 4, 8 Apr 9 14:54 tty8
crw--w---- 1 root tty 4, 9 Apr 9 14:54 tty9
crw-rw---- 1 root dialout 4, 64 Apr 9 14:54 ttyS0
crw-rw---- 1 root dialout 4, 65 Apr 9 14:54 ttyS1
crw-rw---- 1 root dialout 4, 66 Apr 9 14:54 ttyS2
crw-rw---- 1 root dialout 4, 67 Apr 9 14:54 ttyS3
crw-rw---- 1 root dialout 4, 68 Apr 9 14:54 ttyS4
crw-rw---- 1 root dialout 4, 69 Apr 9 14:54 ttyS5
crw-rw---- 1 root dialout 4, 70 Apr 9 14:54 ttyS6
crw-rw---- 1 root dialout 4, 71 Apr 9 14:54 ttyS7
crw------- 1 root root 10, 223 Apr 9 14:54 uinput
crw-rw-rw- 1 root root 1, 9 Apr 9 14:54 urandom
crw-rw---- 1 root root 10, 59 Apr 9 14:54 vboxguest
crw-rw----+ 1 root root 10, 58 Apr 9 14:54 vboxuser
crw-rw---- 1 root tty 7, 0 Apr 9 14:54 vcs
crw-rw---- 1 root tty 7, 1 Apr 9 14:54 vcs1
crw-rw---- 1 root tty 7, 10 Apr 9 14:54 vcs10
crw-rw---- 1 root tty 7, 2 Apr 9 14:55 vcs2
crw-rw---- 1 root tty 7, 3 Apr 9 14:55 vcs3
crw-rw---- 1 root tty 7, 4 Apr 9 14:55 vcs4
crw-rw---- 1 root tty 7, 5 Apr 9 14:55 vcs5
crw-rw---- 1 root tty 7, 6 Apr 9 14:55 vcs6
crw-rw---- 1 root tty 7, 7 Apr 9 14:55 vcs7
crw-rw---- 1 root tty 7, 128 Apr 9 14:54 vcsa
crw-rw---- 1 root tty 7, 129 Apr 9 14:54 vcsa1
crw-rw---- 1 root tty 7, 138 Apr 9 14:54 vcsa10
crw-rw---- 1 root tty 7, 130 Apr 9 14:55 vcsa2
crw-rw---- 1 root tty 7, 131 Apr 9 14:55 vcsa3
crw-rw---- 1 root tty 7, 132 Apr 9 14:55 vcsa4
crw-rw---- 1 root tty 7, 133 Apr 9 14:55 vcsa5
crw-rw---- 1 root tty 7, 134 Apr 9 14:55 vcsa6
crw-rw---- 1 root tty 7, 135 Apr 9 14:55 vcsa7
crw------- 1 root root 10, 63 Apr 9 14:54 vga_arbiter
pr-------- 1 trainee tty 0 Apr 9 15:22 xconsole
crw-rw-rw- 1 root root 1, 5 Apr 9 14:54 zero

On peut noter dans la sortie de la commande que certains fichiers sont de type bloc (b), tandis que d'autre sont de type caractère (c).

...
brw-rw---- 1 root disk 8, 1 Apr 9 14:54 sda1
...
crw-rw-rw- 1 root tty 5, 0 Apr 9 14:54 tty
...

La différence entre les deux repose sur le type de communication entre le système et le module. Dans le premier cas le système accède au périphérique par des coordonnées du bloc de données sur le support tandis que dans le deuxième cas la communication d'échange de données se fait octet par octet sans utiliser des tampons.

Les deux informations clefs du fichier spécial sont situées à la place de la taille d'un fichier normal et se nomment le majeur et le mineur :

le majeur identifie le pilote du périphérique et donc son contrôleur,

le mineur identifie le périphérique ou une particularité du périphérique telle une partition d'un disque.

Commandes

La Commande lspci

Cette commande vous renseigne sur les adaptateurs reliés aux bus PCI, AGP et PCI express :

opensuse:~ # lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)
00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
00:04.0 System peripheral: InnoTek Systemberatung GmbH VirtualBox Guest Service
00:05.0 Multimedia audio controller: Intel Corporation 82801AA AC'97 Audio Controller (rev 01)
00:06.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB
00:07.0 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:0b.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller
00:0d.0 SATA controller: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller (rev 02)

Pour obtenir de l'information sur un adaptateur spécifique, il convient d'utiliser la même commande avec l'option -v en spécifiant l'identifiant concerné :

opensuse:~ # lspci -v -s 00:03.0
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
Subsystem: Intel Corporation PRO/1000 MT Desktop Adapter
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 19
Memory at f0000000 (32-bit, non-prefetchable) [size=128K]
I/O ports at d010 [size=8]
Capabilities: [dc] Power Management version 2
Capabilities: [e4] PCI-X non-bridge device
Kernel driver in use: e1000

ou :

opensuse:~ # lspci -vv -s 00:03.0
00:03.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)
Subsystem: Intel Corporation PRO/1000 MT Desktop Adapter
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz+ UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
Latency: 64 (63750ns min)
Interrupt: pin A routed to IRQ 19
Region 0: Memory at f0000000 (32-bit, non-prefetchable) [size=128K]
Region 2: I/O ports at d010 [size=8]
Capabilities: [dc] Power Management version 2
Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
Capabilities: [e4] PCI-X non-bridge device
Command: DPERE- ERO+ RBC=512 OST=1
Status: Dev=ff:1f.0 64bit- 133MHz- SCD- USC- DC=simple DMMRBC=2048 DMOST=1 DMCRS=8 RSCEM- 266MHz- 533MHz-
Kernel driver in use: e1000

Options de la commande

Les options de cette commande sont :

opensuse:~ # lspci --help
lspci: invalid option -- '-'
Usage: lspci [<switches>]
Basic display modes:
-mm	Produce machine-readable output (single -m for an obsolete format)
-t	Show bus tree
Display options:
-v	Be verbose (-vv for very verbose)
-k	Show kernel drivers handling each device
-x	Show hex-dump of the standard part of the config space
-xxx	Show hex-dump of the whole config space (dangerous; root only)
-xxxx	Show hex-dump of the 4096-byte extended config space (root only)
-b	Bus-centric view (addresses and IRQ's as seen by the bus)
-D	Always show domain numbers
Resolving of device ID's to names:
-n	Show numeric ID's
-nn	Show both textual and numeric ID's (names & numbers)
-q	Query the PCI ID database for unknown ID's via DNS
-qq	As above, but re-query locally cached entries
-Q	Query the PCI ID database for all ID's via DNS
Selection of devices:
-s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]	Show only devices in selected slots
-d [<vendor>]:[<device>]	Show only devices with specified ID's
Other options:
-i <file>	Use specified ID database instead of /usr/share/pci.ids.gz
-p <file>	Look up kernel modules in a given file instead of default modules.pcimap
-M	Enable `bus mapping' mode (dangerous; root only)
PCI access options:
-A <method>	Use the specified PCI access method (see `-A help' for a list)
-O <par>=<val>	Set PCI access parameter (see `-O help' for a list)
-G	Enable PCI access debugging
-H <mode>	Use direct hardware access (<mode> = 1 or 2)
-F <file>	Read PCI configuration dump from a given file

La Commande lsusb

Cette commande vous renseigne sur les adaptateurs reliés au bus usb :

opensuse:~ # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet

Pour obtenir de l'information sur un périphérique usb, il convient d'utiliser la même commande avec l'option -d en spécifiant l'identifiant concerné.

Options de la commande

Les options de cette commande sont :

opensuse:~ # lsusb --help
lsusb: unrecognized option '--help'
Usage: lsusb [options]...
List USB devices
-v, --verbose
Increase verbosity (show descriptors)
-s [[bus]:][devnum]
Show only devices with specified device and/or
bus numbers (in decimal)
-d vendor:[product]
Show only devices with the specified vendor and
product ID numbers (in hexadecimal)
-D device
Selects which device lsusb will examine
-t
Dump the physical USB device hierarchy as a tree
-V, --version
Show version of program

La Commande dmidecode

La commande dmidecode lit la table DMI (Desktop Management Interface) aussi appelée SMBIOS (System Management BIOS) et fourni les informations sur :

l'état du matériel actuel,

les extensions possibles.

opensuse:~ # dmidecode
# dmidecode 2.11
SMBIOS 2.5 present.
5 structures occupying 352 bytes.
Table at 0x000E1000.
Handle 0x0000, DMI type 0, 20 bytes
BIOS Information
Vendor: innotek GmbH
Version: VirtualBox
Release Date: 12/01/2006
Address: 0xE0000
Runtime Size: 128 kB
ROM Size: 128 kB
Characteristics:
ISA is supported
PCI is supported
Boot from CD is supported
Selectable boot is supported
8042 keyboard services are supported (int 9h)
CGA/mono video services are supported (int 10h)
ACPI is supported
Handle 0x0001, DMI type 1, 27 bytes
System Information
Manufacturer: innotek GmbH
Product Name: VirtualBox
Version: 1.2
Serial Number: 0
UUID: C57E5C33-DEF8-4555-80AC-312DB181420D
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Virtual Machine
Handle 0x0003, DMI type 126, 13 bytes
Inactive
Handle 0x0002, DMI type 126, 7 bytes
Inactive
Handle 0xFEFF, DMI type 127, 147 bytes
End Of Table

Options de la commande

Les options de cette commande sont :

opensuse:~ # dmidecode --help
Usage: dmidecode [OPTIONS]
Options are:
-d, --dev-mem FILE Read memory from device FILE (default: /dev/mem)
-h, --help Display this help text and exit
-q, --quiet Less verbose output
-s, --string KEYWORD Only display the value of the given DMI string
-t, --type TYPE Only display the entries of given type
-u, --dump Do not decode the entries
--dump-bin FILE Dump the DMI data to a binary file
--from-dump FILE Read the DMI data from a binary file
-V, --version Display the version and exit

Répertoire /proc

Le répertoire /proc contient des fichiers et des répertoires virtuels. Le contenu de ces fichiers est créé dynamiquement lors de la consultation. Seul root peut consulter la totalité des informations dans le répertoire /proc.

opensuse:~ # ls /proc
1 21 3553 4084 6356 6427 asound kcore slabinfo
10 22 36 540 6358 6429 buddyinfo key-users softirqs
11 23 3765 550 6360 6448 bus kmsg splash
1136 2374 3793 575 6362 6450 cgroups kpagecount stat
12 24 38 5783 6364 6495 cmdline kpageflags swaps
1238 247 3831 6 6368 6499 config.gz latency_stats sys
13 25 3840 6094 6376 6501 cpuinfo loadavg sysrq-trigger
1301 2504 3862 6118 6378 6503 crypto locks sysvipc
1313 253 388 6204 6381 6545 devices mdstat timer_list
14 2540 389 6213 6388 6631 diskstats meminfo timer_stats
15 2549 39 6218 6395 6660 dma misc tty
16 2552 3931 6260 6396 6663 dri modules uptime
1682 26 3960 6261 6397 6664 driver mounts version
1698 27 3961 6266 6404 6675 execdomains mtrr vmallocinfo
17 3 3962 6277 6406 6679 fb net vmstat
1728 31 4 6280 6407 6876 filesystems pagetypeinfo zoneinfo
18 32 40 6288 6412 7 fs partitions
1829 322 4079 6291 6417 8 interrupts reserve_info
19 33 4080 6297 6418 9 iomem sched_debug
1970 34 4081 6349 6419 962 ioports schedstat
2 3484 4082 6350 6422 971 irq scsi
20 35 4083 6354 6423 acpi kallsyms self

Répertoires

ide/scsi

Ce répertoire contient des répertoires dans lesquels se trouvent des informations sur la capacité, le type et la géométrie des disques.

acpi

Ce répertoire contient des informations sur la gestion de l'énérgie, les températures, les vitesses de ventilateurs, la charge des batteries.

bus

Ce répertoire contient un sous-répertoire par bus.

net

Ce répertoire contient des informations sur le réseau.

sys

Ce répertoire contient des paramètres du noyau. Certains des fichiers dans ce répertoire sont accessibles en écriture par root en temps réel. Par exemple pour éviter des attaques réseau DoS utilisant la commande ping, saisissez la commande suivante :

# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all [Entrée]

Cette commande a pour résultat d'ignorer les reqûetes ping.

La commande sysctl

Les fichiers dans le répertoire /proc/sys peuvent être administrés par la commande sysctl en temps réel.

La commande sysctl applique les règles consignés dans le fichier /etc/sysctl.conf au démarrage de la machine.

Saisissez la commande :

opensuse:~ # cat /etc/sysctl.conf
# Disable response to broadcasts.
# You don't want yourself becoming a Smurf amplifier.
net.ipv4.icmp_echo_ignore_broadcasts = 1
# enable route verification on all interfaces
net.ipv4.conf.all.rp_filter = 1
# disable IPv6 completely
# net.ipv6.conf.all.disable_ipv6 = 1
# enable IPv6 forwarding
#net.ipv6.conf.all.forwarding = 1
# increase the number of possible inotify(7) watches
fs.inotify.max_user_watches = 65536
# avoid deleting secondary IPs on deleting the primary IP
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.all.promote_secondaries = 1

Options de la commande

Les options de la commande sysctl sont :

opensuse:~ # sysctl --help
usage: sysctl [-n] [-e] variable ...
sysctl [-n] [-e] [-q] -w variable=value ...
sysctl [-n] [-e] -a
sysctl [-n] [-e] [-q] -p <file> (default /etc/sysctl.conf)
sysctl [-n] [-e] -A

<note important> Consultez la page de la traduction du manuel de sysctl ici pour comprendre la commande. </note>

Fichiers

Processeur

opensuse:~ # cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model	: 37
model name	: Intel(R) Core(TM) i5 CPU M 480 @ 2.67GHz
stepping	: 5
cpu MHz	: 2648.621
cache size	: 6144 KB
fdiv_bug	: no
hlt_bug	: no
f00f_bug	: no
coma_bug	: no
fpu	: yes
fpu_exception	: yes
cpuid level	: 5
wp	: yes
flags	: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx lm constant_tsc up pni monitor ssse3 lahf_lm
bogomips	: 5297.24
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

Interruptions système

opensuse:~ # cat /proc/interrupts
CPU0
0: 134 IO-APIC-edge timer
1: 506 IO-APIC-edge i8042
8: 1 IO-APIC-edge rtc0
9: 0 IO-APIC-fasteoi acpi
12: 2407 IO-APIC-edge i8042
14: 39096 IO-APIC-edge ata_piix
15: 1855 IO-APIC-edge ata_piix
19: 2255 IO-APIC-fasteoi ehci_hcd:usb1, eth0
20: 33353 IO-APIC-fasteoi vboxguest
21: 699 IO-APIC-fasteoi ahci, Intel 82801AA-ICH
22: 32 IO-APIC-fasteoi ohci_hcd:usb2
NMI: 0 Non-maskable interrupts
LOC: 270573 Local timer interrupts
SPU: 0 Spurious interrupts
PMI: 0 Performance monitoring interrupts
IWI: 0 IRQ work interrupts
RES: 0 Rescheduling interrupts
CAL: 0 Function call interrupts
TLB: 0 TLB shootdowns
TRM: 0 Thermal event interrupts
THR: 0 Threshold APIC interrupts
MCE: 0 Machine check exceptions
MCP: 8 Machine check polls
ERR: 0
MIS: 0

Canaux DMA

opensuse:~ # cat /proc/dma
4: cascade

Plages d'entrée/sortie

opensuse:~ # cat /proc/ioports
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0071 : rtc_cmos
0070-0071 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : 0000:00:01.1
0170-0177 : ata_piix
01f0-01f7 : 0000:00:01.1
01f0-01f7 : ata_piix
0376-0376 : 0000:00:01.1
0376-0376 : ata_piix
03c0-03df : vesafb
03f6-03f6 : 0000:00:01.1
03f6-03f6 : ata_piix
0cf8-0cff : PCI conf1
4000-4003 : ACPI PM1a_EVT_BLK
4004-4005 : ACPI PM1a_CNT_BLK
4008-400b : ACPI PM_TMR
4020-4021 : ACPI GPE0_BLK
d000-d00f : 0000:00:01.1
d000-d00f : ata_piix
d010-d017 : 0000:00:03.0
d010-d017 : e1000
d020-d03f : 0000:00:04.0
d100-d1ff : 0000:00:05.0
d100-d1ff : Intel 82801AA-ICH
d200-d23f : 0000:00:05.0
d200-d23f : Intel 82801AA-ICH
d240-d247 : 0000:00:0d.0
d240-d247 : ahci
d250-d257 : 0000:00:0d.0
d250-d257 : ahci
d260-d26f : 0000:00:0d.0
d260-d26f : ahci

Périphériques

opensuse:~ # cat /proc/devices
Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
14 sound/mixer
14 sound/dsp
14 sound/audio
14 sound/adsp
21 sg
29 fb
99 ppdev
116 alsa
128 ptm
136 pts
180 usb
189 usb_device
202 cpu/msr
226 drm
252 hidraw
253 bsg
254 rtc
Block devices:
259 blkext
8 sd
9 md
11 sr
65 sd
66 sd
67 sd
68 sd
69 sd
70 sd
71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
253 device-mapper
254 mdp

Modules

opensuse:~ # cat /proc/modules
fuse 72011 2 - Live 0xf81b5000
ip6t_LOG 7940 5 - Live 0xf8117000
xt_tcpudp 3052 2 - Live 0xf7d38000
xt_pkttype 960 3 - Live 0xf7d32000
ipt_LOG 7845 5 - Live 0xf7d20000
xt_limit 1753 10 - Live 0xf7ceb000
af_packet 20330 0 - Live 0xf7cb8000
vboxsf 40932 0 - Live 0xf7c86000
vboxvideo 1276 1 - Live 0xf79fe000
drm 191946 2 vboxvideo, Live 0xf8237000
binfmt_misc 7069 1 - Live 0xf7c72000
mperf 1271 0 - Live 0xf7cbf000
snd_pcm_oss 48271 0 - Live 0xf7d3a000
snd_mixer_oss 17521 1 snd_pcm_oss, Live 0xf7c91000
snd_seq 57777 0 - Live 0xf7c57000
snd_seq_device 6678 1 snd_seq, Live 0xf7a7d000
edd 8752 0 - Live 0xf7a3e000
ip6t_REJECT 4192 3 - Live 0xf81f3000
nf_conntrack_ipv6 8286 3 - Live 0xf81e6000
nf_defrag_ipv6 9434 1 nf_conntrack_ipv6, Live 0xf81d8000
ip6table_raw 1203 1 - Live 0xf81c8000
xt_NOTRACK 864 4 - Live 0xf81b2000
ipt_REJECT 2200 3 - Live 0xf81a3000
iptable_raw 1294 1 - Live 0xf8196000
iptable_filter 1466 1 - Live 0xf8189000
ip6table_mangle 1636 0 - Live 0xf817f000
nf_conntrack_netbios_ns 1366 0 - Live 0xf8175000
nf_conntrack_ipv4 8584 3 - Live 0xf8168000
nf_defrag_ipv4 1281 1 nf_conntrack_ipv4, Live 0xf815b000
ip_tables 13128 2 iptable_raw,iptable_filter, Live 0xf814d000
xt_conntrack 2480 6 - Live 0xf813f000
nf_conntrack 75967 5 nf_conntrack_ipv6,xt_NOTRACK,nf_conntrack_netbios_ns,nf_conntrack_ipv4,xt_conntrack, Live 0xf812a000
ip6table_filter 1375 1 - Live 0xf7cef000
ip6_tables 13404 4 ip6t_LOG,ip6table_raw,ip6table_mangle,ip6table_filter, Live 0xf7d13000
x_tables 18727 16 ip6t_LOG,xt_tcpudp,xt_pkttype,ipt_LOG,xt_limit,ip6t_REJECT,ip6table_raw,xt_NOTRACK,ipt_REJECT,iptable_raw,iptable_filter,ip6table_mangle,ip_tables,xt_conntrack,ip6table_filter,ip6_tables, Live 0xf7cdc000
dm_mod 76266 0 - Live 0xf80f8000
snd_intel8x0 27702 2 - Live 0xf7c9a000
snd_ac97_codec 106769 1 snd_intel8x0, Live 0xf7cf6000
ppdev 7883 0 - Live 0xf7a22000
parport_pc 33763 0 - Live 0xf7a2c000
ac97_bus 1082 1 snd_ac97_codec, Live 0xf7a15000
snd_pcm 88841 3 snd_pcm_oss,snd_intel8x0,snd_ac97_codec, Live 0xf8573000
vboxguest 208231 6 vboxsf, Live 0xf8508000
snd_timer 22055 2 snd_seq,snd_pcm, Live 0xf84fc000
parport 34550 2 ppdev,parport_pc, Live 0xf84ec000
joydev 9578 0 - Live 0xf84ca000
snd 67246 12 snd_pcm_oss,snd_mixer_oss,snd_seq,snd_seq_device,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer, Live 0xf84af000
sr_mod 15048 0 - Live 0xf847a000
e1000 139787 0 - Live 0xf8445000
battery 10066 0 - Live 0xf840b000
cdrom 38437 1 sr_mod, Live 0xf83fb000
sg 28446 0 - Live 0xf83e7000
button 5497 0 - Live 0xf7d23000
ac 3227 0 - Live 0xf7d1a000
i2c_piix4 10342 0 - Live 0xf7cf1000
pcspkr 1662 0 - Live 0xf7ce4000
soundcore 7270 1 snd, Live 0xf7cd8000
snd_page_alloc 8121 2 snd_intel8x0,snd_pcm, Live 0xf7ccb000
fan 2575 0 - Live 0xf7c69000
processor 36507 0 - Live 0xf7a42000
thermal 13154 0 - Live 0xf7a38000
thermal_sys 14790 3 fan,processor,thermal, Live 0xf7a26000
ata_generic 3015 0 - Live 0xf7a17000

Statistiques de l'utilisation des disques

opensuse:~ # cat /proc/diskstats
8 0 sda 14117 2556 764125 207273 1523 2002 28034 19186 0 26442 226384
8 1 sda1 274 8 2208 486 2 0 10 0 0 485 485
8 2 sda2 11210 1268 747068 200596 1467 2002 28024 19157 0 26155 219700
8 3 sda3 1075 1280 2397 920 0 0 0 0 0 882 900
8 4 sda4 2 0 4 52 0 0 0 0 0 52 52
8 5 sda5 163 0 1304 860 0 0 0 0 0 860 860
8 6 sda6 163 0 1304 726 0 0 0 0 0 606 725
8 7 sda7 163 0 1304 422 0 0 0 0 0 422 422
8 8 sda8 163 0 1304 516 0 0 0 0 0 516 516
8 9 sda9 163 0 1304 441 0 0 0 0 0 441 441
8 10 sda10 163 0 1304 765 0 0 0 0 0 765 765
8 11 sda11 163 0 1304 802 0 0 0 0 0 802 802
8 12 sda12 160 0 1280 645 0 0 0 0 0 645 645
11 0 sr0 0 0 0 0 0 0 0 0 0 0 0

Partitions

opensuse:~ # cat /proc/partitions
major minor #blocks name
8 0 16777216 sda
8 1 111616 sda1
8 2 8674915 sda2
8 3 2048287 sda3
8 4 1 sda4
8 5 512000 sda5
8 6 204800 sda6
8 7 307200 sda7
8 8 512000 sda8
8 9 409600 sda9
8 10 512000 sda10
8 11 512000 sda11
8 12 204800 sda12

Espaces de pagination

opensuse:~ # cat /proc/swaps
Filename	Type	Size	Used	Priority
/dev/sda3 partition	2048280	0	-1

Statistiques d'utilisation du processeur

opensuse:~ # cat /proc/loadavg
0.02 0.13 0.16 2/288 6970

Statistiques d'utilisation de la mémoire

opensuse:~ # cat /proc/meminfo
MemTotal: 1012320 kB
MemFree: 202552 kB
Buffers: 85776 kB
Cached: 478128 kB
SwapCached: 0 kB
Active: 332040 kB
Inactive: 420828 kB
Active(anon): 189136 kB
Inactive(anon): 7996 kB
Active(file): 142904 kB
Inactive(file): 412832 kB
Unevictable: 0 kB
Mlocked: 0 kB
HighTotal: 135112 kB
HighFree: 292 kB
LowTotal: 877208 kB
LowFree: 202260 kB
SwapTotal: 2048280 kB
SwapFree: 2048280 kB
Dirty: 76 kB
Writeback: 0 kB
AnonPages: 188964 kB
Mapped: 97288 kB
Shmem: 8168 kB
Slab: 40532 kB
SReclaimable: 30248 kB
SUnreclaim: 10284 kB
KernelStack: 2280 kB
PageTables: 5176 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2554440 kB
Committed_AS: 1317152 kB
VmallocTotal: 122880 kB
VmallocUsed: 28468 kB
VmallocChunk: 86004 kB
HardwareCorrupted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 12280 kB
DirectMap2M: 890880 kB

Version du noyau

opensuse:~ # cat /proc/version
Linux version 2.6.37.6-0.5-desktop (geeko@buildhost) (gcc version 4.5.1 20101208 [gcc-4_5-branch revision 167585] (SUSE Linux) ) #1 SMP PREEMPT 2011-04-25 21:48:33 +0200

Interprétation des informations dans /proc

Les informations brutes stockées dans /proc peuvent être interprétées grâce à l'utilisation des commandes dites de gestion des performances :

free,

uptime et w,

iostat,

vmstat,

mpstat,

sar.

Par défaut les exécutables iostat, vmstat, mpstat et sar ne sont pas installés sous openSUSE. Il convient donc de les installer à l'aide de la commande zypper :

opensuse:~ # zypper install sysstat
Loading repository data...
Reading installed packages...
Resolving package dependencies...
The following NEW package is going to be installed:
sysstat
1 new package to install.
Overall download size: 194.0 KiB. After the operation, additional 755.0 KiB
will be used.
Continue? [y/n/?] (y): y
Retrieving package sysstat-9.0.6.1-14.15.1.i586 (1/1), 194.0 KiB (755.0 KiB unpacked)
Retrieving: sysstat-9.0.6.1-14.15.1.i586.rpm [done]
Installing: sysstat-9.0.6.1-14.15.1 [done]

Commandes

free

La commande free permet de donner l’état de la mémoire totale, libre, partagée, swap et bufferisée. Saisissez donc la commande suivante :

opensuse:~ # free -m
total used free shared buffers cached
Mem: 988 603 384 0 14 377
-/+ buffers/cache: 211 776
Swap: 2000 0 2000

Dans le cas de cet exemple, nous pouvons constater que l’affichage montre :

988 Mo de mémoire physique totale,

603 Mo de mémoire physique utilisée et 384 Mo de mémoire physique libre,

2000 Mo de mémoire swap totale et 0 Mo de swap utilisé

La ligne -/+ buffers/cache: indique que les applications utilisent 211 Mo et qu’elles disposent de 775 Mo de mémoire libre (14+377+384).

Les options de cette commande sont :

opensuse:~ # free -h
free: invalid option -- 'h'
usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]
-b,-k,-m,-g show output in bytes, KB, MB, or GB
-l show detailed low and high memory statistics
-o use old format (no -/+buffers/cache line)
-t display total for RAM + swap
-s update every [delay] seconds
-c update [count] times
-V display version information and exit

uptime ou w

Chacune des ces commandes indique la charge moyenne du ou des processeurs depuis 1 minute, 5 minutes et 15 minutes :

opensuse:~ # uptime
15:51pm up 0:13, 3 users, load average: 0.15, 0.26, 0.16
opensuse:~ # w
15:51:13 up 13 min, 3 users, load average: 0.15, 0.26, 0.16
USER TTY LOGIN@ IDLE JCPU PCPU WHAT
trainee :0 15:46 ?xdm? 52.33s 0.03s /usr/lib/gdm/gdm-simple-slave -
trainee console 15:46 12:59 0.00s 0.03s /usr/lib/gdm/gdm-simple-slave -
trainee pts/0 15:47 0.00s 0.09s 1.45s gnome-terminal

Les valeurs load average ou charge moyenne indiquent le nombre moyen de processus en cours de traitement ou en attente pour la période concernée.

Par exemple si les valeurs sur un système muni d'un seul processeur étaient 3,48 4,00 3,85 ceci indiquerait que le processeur a du mal à traiter les processus mettant en moyenne :

2,48 processus en attente dans la dernière minute,

3,00 processus en attente dans les dernières 5 minutes,

2,85 processus en attente dans les dernières 15 minutes.

Les options de ces commandes sont :

opensuse:~ # uptime --help
Usage: uptime [OPTION]... [FILE]
Print the current time, the length of time the system has been up,
the number of users on the system, and the average number of jobs
in the run queue over the last 1, 5 and 15 minutes. Processes in
an uninterruptible sleep state also contribute to the load average.
If FILE is not specified, use /var/run/utmp. /var/log/wtmp as FILE is common.
--help display this help and exit
--version output version information and exit
Report uptime bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report uptime translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'uptime invocation'
opensuse:~ # w --help
w: invalid option -- '-'
usage: w -hlsufV [user]
-h skip header
-l long listing (default)
-s short listing
-n non truncated listing (large)
-u ignore uid of processes
-f toggle FROM field (default off)
-V display version

iostat

La commande iostat affiche des statistiques sur l'utilisation des disques, des terminaux et des lecteurs de cartouche :

opensuse:~ # iostat
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
6.71 0.60 4.21 1.56 0.00 86.92
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 16.03 686.86 71.50 806597 83962

Au-dessous de la première ligne indiquant la version du noyau du système et son nom d'hôte ainsi que la date actuelle, iostat affiche une vue d'ensemble de l'utilisation CPU moyenne du système depuis le dernier démarrage. Le rapport d'utilisation du CPU inclut les pourcentages suivants :

Pourcentage de temps passé en mode utilisateur (exécutant des applications, etc.)

Pourcentage de temps passé en mode utilisateur (pour les processus qui ont modifié leur priorité de programmation à l'aide de la commande nice)

Pourcentage de temps passé en mode noyau

Pourcentage de temps passé en inactivité

Notez la valeur de %iowait. Dans le cas où ce pourcentage est trop élévé, ceci indique que le processeur passe son temps à attendre les entrées et les sorties de disque.

Pour surveiller la vitesse des entrées et des sorties du disque, vous pouvez utiliser la commande hdparm :

opensuse:~ # hdparm -t /dev/sda
/dev/sda:
Timing buffered disk reads: 246 MB in 3.03 seconds = 81.14 MB/sec

Au-dessous du rapport d'utilisation du CPU figure le rapport d'utilisation des périphériques. Ce dernier contient une ligne pour chaque périphérique disque du système et inclut les informations suivantes :

La spécification du périphérique, apparaissant sous la forme dev<major-number>-sequence-number où <major-number> correspond au nombre majeur du périphérique et <sequence-number> correspond à un numéro de séquence commençant par zéro.

Le nombre de transferts (ou opérations d'E/S) par seconde.

Le nombre de blocs de 512 octets lus par seconde.

Le nombre de blocs de 512 octets écrits par seconde.

Le nombre total de blocs de 512 octets lus par seconde.

Le nombre total de blocs de 512 octets écrits par seconde.

Les options de cette commande sont :

opensuse:~ # iostat --help
Usage: iostat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ]
[ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ]

vmstat

La commande vmstat affiche des statistiques sur la mémoire, la pagination et la charge ponctuelle du processeur :

opensuse:~ # vmstat 1 10
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 350536 16092 405408 0 0 518 35 279 789 8 4 86 2 0
0 0 0 350412 16092 405396 0 0 0 0 341 781 3 2 95 0 0
0 0 0 348552 16092 407788 0 0 0 0 632 2508 14 10 76 0 0
1 0 0 347932 16092 407780 0 0 0 0 339 856 9 2 89 0 0
0 0 0 347956 16092 407784 0 0 0 0 344 856 9 3 88 0 0
0 0 0 347956 16092 407784 0 0 0 0 354 842 9 2 89 0 0
0 0 0 347956 16100 407784 0 0 0 48 478 1104 11 4 85 0 0
0 0 0 347956 16100 407784 0 0 0 8 380 923 11 3 86 0 0
0 0 0 347980 16100 407784 0 0 0 0 403 868 6 3 91 0 0
1 0 0 347980 16108 407828 0 0 0 56 390 927 12 2 86 0 0

La première ligne subdivise le champ en six catégories à savoir : processus, mémoire, swap, E/S, système et CPU sur lesquelles elle donne des statistiques. La seconde ligne identifie de manière encore plus détaillée chacun des champs, permettant ainsi de parcourir simplement et rapidement l'ensemble des données lors de la recherche de statistiques spécifiques.

Les champs relatifs aux processus sont les suivants :

r — Le nombre de processus exécutables attendant d'avoir accès au CPU

b — Le nombre de processus exécutables dans un état de veille qui ne peut être interrompu

Les champs relatifs à la mémoire sont les suivants :

swpd — La quantité de mémoire virtuelle utilisée

free — La quantité de mémoire libre

buff — La quantité de mémoire utilisée par les tampons (ou buffers)

cache — La quantité de mémoire utilisée comme cache de pages

Les champs relatifs au swap sont les suivants :

si — La quantité de mémoire chargée depuis le disque

so — La quantité de mémoire déchargée sur le disque

Les champs relatifs aux Entrées/Sorties (E/S) sont les suivants :

bi — Blocs envoyés vers un périphérique blocs

bo— Blocs reçus d'un périphérique blocs

Les champs relatifs au système sont les suivants :

in — Nombre d'interruptions par seconde

cs — Nombre de changements de contexte par seconde

Les champs relatifs au CPU sont les suivants :

us — Le pourcentage de temps pendant lequel le CPU exécute un code de niveau utilisateur

sy — Le pourcentage de temps pendant lequel le CPU exécute un code de niveau système

id — Le pourcentage de temps pendant lequel le CPU était inoccupé

wa — Attente d'E/S

Les options de cette commande sont :

opensuse:~ # vmstat --help
usage: vmstat [-V] [-n] [delay [count]]
-V prints version.
-n causes the headers not to be reprinted regularly.
-a print inactive/active page stats.
-d prints disk statistics
-D prints disk table
-p prints disk partition statistics
-s prints vm table
-m prints slabinfo
-S unit size
delay is the delay between updates in seconds.
unit size k:1000 K:1024 m:1000000 M:1048576 (default is K)
count is the number of updates.

Par défaut la commande vmstat affiche des informations depuis le démarrage du système.

mpstat

La commande mpstat affiche des statistiques détaillées sur le CPU :

opensuse:~ # mpstat
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:00:27 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
16:00:27 all 7.27 0.53 4.36 1.56 0.00 0.11 0.00 0.00 86.17

Dans le cas où vous avez plusieurs processeurs ou coeurs, vous pouvez visualiser ces mêmes informations par unité de traitement :

opensuse:~ # mpstat -P ALL
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:00:35 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
16:00:35 all 7.25 0.53 4.34 1.55 0.00 0.11 0.00 0.00 86.22
16:00:35 0 7.25 0.53 4.34 1.55 0.00 0.11 0.00 0.00 86.22

Pour afficher 5 jeux de statistiques à des intervales de 2 secondes pour tous les unités de traitement, il convient d'utiliser la commande suivante :

opensuse:~ # mpstat -P ALL 2 5
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:00:45 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
16:00:47 all 2.99 0.00 1.00 0.00 0.00 0.00 0.00 0.00 96.02
16:00:47 0 2.99 0.00 1.00 0.00 0.00 0.00 0.00 0.00 96.02
16:00:47 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
16:00:49 all 2.00 0.00 1.50 0.00 0.00 0.00 0.00 0.00 96.50
16:00:49 0 2.00 0.00 1.50 0.00 0.00 0.00 0.00 0.00 96.50
16:00:49 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
16:00:51 all 13.50 0.00 8.00 0.00 0.00 0.00 0.00 0.00 78.50
16:00:51 0 13.50 0.00 8.00 0.00 0.00 0.00 0.00 0.00 78.50
16:00:51 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
16:00:53 all 25.13 0.00 10.55 0.00 0.00 0.50 0.00 0.00 63.82
16:00:53 0 25.13 0.00 10.55 0.00 0.00 0.50 0.00 0.00 63.82
16:00:53 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
16:00:55 all 38.38 0.00 21.72 0.00 0.00 0.00 0.00 0.00 39.90
16:00:55 0 38.38 0.00 21.72 0.00 0.00 0.00 0.00 0.00 39.90
Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
Average: all 16.33 0.00 8.52 0.00 0.00 0.10 0.00 0.00 75.05
Average: 0 16.33 0.00 8.52 0.00 0.00 0.10 0.00 0.00 75.05

Les options de cette commande sont :

opensuse:~ # mpstat --help
Usage: mpstat [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -I { SUM | CPU | ALL } ] [ -u ] [ -P { <cpu> [,...] | ALL } ] [ -V ]

sar

La commande sar permet de surveiller toutes les ressources du système selon l'option qui est passée en argument à la commande. Quelques options importantes sont :

Option	Description
-u	Pourcentage d'utilisation du CPU
-q	Nombre de processus en attente
-r	Utilisation de la mémoire centrale
-w	Surveillance du swapping
-p	Surveillance de la pagination
-b	Utilisation des tampons
-d	Utilisation des disques

La commande /usr/lib/sa/sadc permet de collecter les informations.

opensuse:~ # ls /usr/lib/sa
sa1 sa2 sadc

Le script /usr/lib/sa/sa1 exécute la commande /usr/lib/sa/sadc. Ce script prend deux options :

Option	Description
-t	L'interval entre les collectes
-n	Nombre de collectes

Le script /usr/lib/sa/sa2 exécute la commande sar et consigne les informations dans un fichier au format /var/log/sa/sar<jj>.

Pour pouvoir fonctionner correctement, ces scripts doivent être appelés par cron.

Pour constater ce fonctionnement manuellement saisissez la commande suivante :

opensuse:~ # /usr/lib/sa/sa1 5 5

Saisissez ensuite les commandes suivantes :

opensuse:~ # sar
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:03:19 CPU %user %nice %system %iowait %steal %idle
16:03:24 all 7.21 0.00 5.61 0.20 0.00 86.97
16:03:29 all 10.04 0.00 4.02 0.00 0.00 85.94
16:03:34 all 2.99 0.00 3.59 0.00 0.00 93.41
16:03:39 all 0.60 0.00 0.60 0.00 0.00 98.80
Average: all 5.21 0.00 3.46 0.05 0.00 91.28
opensuse:~ # sar -u 5 3
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:03:53 CPU %user %nice %system %iowait %steal %idle
16:03:58 all 1.60 0.00 1.60 0.00 0.00 96.80
16:04:03 all 0.20 0.20 0.40 0.00 0.00 99.20
16:04:08 all 0.60 0.40 1.00 0.00 0.00 98.00
Average: all 0.80 0.20 1.00 0.00 0.00 98.00
opensuse:~ # sar -r 5 3
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:04:13 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit
16:04:18 348360 663960 65.59 16444 391192 1474840 48.19
16:04:23 348616 663704 65.56 16444 390408 1474056 48.16
16:04:28 348616 663704 65.56 16452 390408 1474056 48.16
Average: 348531 663789 65.57 16447 390669 1474317 48.17
opensuse:~ # sar -w 5 3
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:04:32 proc/s cswch/s
16:04:37 0.00 125.25
16:04:42 0.00 59.60
16:04:47 0.00 52.30
Average: 0.00 79.04
opensuse:~ # sar -b 5 3
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:04:53 tps rtps wtps bread/s bwrtn/s
16:04:58 0.00 0.00 0.00 0.00 0.00
16:05:03 2.21 0.00 2.21 0.00 25.70
16:05:08 0.00 0.00 0.00 0.00 0.00
Average: 0.74 0.00 0.74 0.00 8.56
opensuse:~ # sar -d 5 3
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:05:18 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
16:05:23 dev8-0 2.40 0.00 41.52 17.33 0.00 1.00 0.42 0.10
16:05:23 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
16:05:28 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
16:05:28 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
16:05:33 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev8-0 0.80 0.00 13.87 17.33 0.00 1.00 0.42 0.03
opensuse:~ # sar -p 5 3
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:05:37 CPU %user %nice %system %iowait %steal %idle
16:05:42 all 0.40 0.00 0.60 0.20 0.00 98.80
16:05:47 all 0.20 0.00 0.20 0.00 0.00 99.60
16:05:52 all 0.00 0.00 0.40 0.00 0.00 99.60
Average: all 0.20 0.00 0.40 0.07 0.00 99.33
opensuse:~ # sar -v 5 3
Linux 2.6.37.6-0.5-desktop (opensuse)	04/09/12	_i686_	(1 CPU)
16:05:58 dentunusd file-nr inode-nr pty-nr
16:06:03 31766 5184 20159 47
16:06:08 31767 5280 20169 47
16:06:13 31767 5280 20169 47
Average: 31767 5248 20166 47

Les options de cette commande sont :

opensuse:~ # sar --help
Usage: sar [ options ] [ <interval> [ <count> ] ]
Options are:
[ -A ] [ -b ] [ -B ] [ -C ] [ -d ] [ -h ] [ -m ] [ -p ] [ -q ] [ -r ] [ -R ]
[ -S ] [ -t ] [ -u [ ALL ] ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ]
[ -n { <keyword> [,...] | ALL } ]
[ -o [ <filename> ] | -f [ <filename> ] ]
[ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]

Utilisation des commandes en production

Identifier un système limité par le processeur

Dans ce cas utilisez les commandes suivantes :

uptime ou w

vmstat

mpstat -P ALL

sar -u

iostat -c

Identifier un système ayant un problème de mémoire

Dans ce cas utilisez les commandes suivantes :

free

sar -B

Identifier un système ayant un problème d'E/S

Utilisez la commande :

iostat -d -x

Modules usb

L'USB (Universal Serial Bus) est un bus de données qui peut offrir des taux de transfert jusqu'à 480Mb/s sous la version 2.0 et jusqu'à 4.8 Gb/s sous la version 3.0. Les modules nécessaires pour les contrôleurs USB sont :

Version USB	Module	Nom Complet
1.0\1.1	UHCI	Universal Controller Host Interface
OHCI	Open Controller Host Interface
2.0	EHCI	Enhanced Host Controller Interface
3.0	XHCI	Extensible Host Controller Interface

Le tableau suivant liste les modules courrament chargés en fonction du périphérique utilisé :

Module	Type de Périphérique
usb_storage	Supports de masse
usbhid	Periphériques HID (Human Interface Device)
snd-usb-audio	Cartes son usb
usbvidéo	Cartes vidéo et d'acquisition
irda-usb	Périphériques infrarouges
usbnet	Cartes réseaux usb

Les modules peuvent être chargés par un des moyens suivants :

INITrd,

Le processus init,

kmod, d'une manière dynamique et transparente lors du branchement du périphérique, en utilisant le fichier /lib/modules/2.6.18-194.3.1.el5/modules.usbmap,

udev,

manuellement.

<note> Branchez une clef USB avant de continuer. Si vous utilisez VirtualBox, activez la clef dans votre machine virtuelle grâce aux menus Périphériques > Périphériques USB > le_nom_de_votre_clef. </note>

udev

Le noyau Linux 2.6 est capable de détecter des périphériques branchés à chaud. Cette technologie s'appelle le hotplugging. Le hotplugging est obtenu grâce à l'utilisation de trois composants :

Udev,

HAL,

Dbus.

Les rôles de chaque composant sont les suivants :

Udev se charge de créer et supprimer d'une manière dynamique les nœuds dans le répertoire /dev,

HAL obtient des informations à partir d'Udev et créé un fichier au format XML représentant le périphérique branché. Il informe ensuite Nautilus en utilisant le Dbus,

Dbus joue le rôle d'un bus système qui est utilisé pour la communication inter-processus.

Lors de démarrage de Linux, Udev joue un rôle important :

Au démarrage tmpfs est monté sur /dev,

Udev copie les éventuels nœuds statiques de /lib/udev/devices vers /dev,

le démon udevd collecte des données appelées uevents du noyau et cherche une règle correspondante dans le répertoire /lib/udev/rules.d/,

Udev crée les nœuds et liens symboliques spécifiés dans la règle identifiée,

Udev stocke les règles contenues dans /lib/udev/rules.d/*.rules en mémoire,

En cas de modification des ces règles, Udev met à jour la mémoire.

Udev repose sur le filesystem sysfs monté sur /sys qui permet de rendre les périphériques visibles à Udev dans l'User Space. Par exemple, lors du branchement d'une clé USB, Udev crée /dev/sdb1 automatiquement :

opensuse:~ # ls /dev | grep sdb
sdb
sdb1
opensuse:~ # ls -l /dev/.udev/db | grep 08:31
-rw-r--r-- 1 root root 741 Apr 10 08:31 b8:16
-rw-r--r-- 1 root root 1204 Apr 10 08:31 b8:17
-rw-r--r-- 1 root root 342 Apr 10 08:31 c189:1
-rw-r--r-- 1 root root 0 Apr 10 08:31 c21:2
-rw-r--r-- 1 root root 0 Apr 10 08:31 c253:2
opensuse:~ # ls /sys/block/sdb
alignment_offset device inflight removable slaves uevent
bdi discard_alignment power ro stat
capability ext_range queue sdb1 subsystem
dev holders range size trace

et utilise les informations contenues dans le fichier /lib/modules/`uname -r`/modules.alias pour trouver le pilote nécessaire :

Le contenu des fichiers non-vides créés dans le répertoire /dev/.udev/db/ est :

opensuse:~ # cat /dev/.udev/db/b8:16
N:sdb
S:disk/by-id/usb-JetFlash_Transcend_8GB_48MSBMWJ2851SPKF-0:0
S:disk/by-path/pci-0000:00:0b.0-usb-0:1:1.0-scsi-0:0:0:0
W:28
I:3054855415
E:ID_VENDOR=JetFlash
E:ID_VENDOR_ENC=JetFlash
E:ID_VENDOR_ID=8564
E:ID_MODEL=Transcend_8GB
E:ID_MODEL_ENC=Transcend\x208GB\x20\x20\x20
E:ID_MODEL_ID=1000
E:ID_REVISION=1100
E:ID_SERIAL=JetFlash_Transcend_8GB_48MSBMWJ2851SPKF-0:0
E:ID_SERIAL_SHORT=48MSBMWJ2851SPKF
E:ID_TYPE=disk
E:ID_INSTANCE=0:0
E:ID_BUS=usb
E:ID_USB_INTERFACES=:080650:
E:ID_USB_INTERFACE_NUM=00
E:ID_USB_DRIVER=usb-storage
E:ID_PATH=pci-0000:00:0b.0-usb-0:1:1.0-scsi-0:0:0:0
E:ID_PART_TABLE_TYPE=dos
E:UDISKS_PRESENTATION_NOPOLICY=0
E:UDISKS_PARTITION_TABLE=1
E:UDISKS_PARTITION_TABLE_SCHEME=mbr
E:UDISKS_PARTITION_TABLE_COUNT=1
opensuse:~ # cat /dev/.udev/db/b8:17
N:sdb1
S:disk/by-id/usb-JetFlash_Transcend_8GB_48MSBMWJ2851SPKF-0:0-part1
S:disk/by-path/pci-0000:00:0b.0-usb-0:1:1.0-scsi-0:0:0:0-part1
S:disk/by-uuid/2D9370690D5D6E39
W:29
I:3055647514
E:ID_VENDOR=JetFlash
E:ID_VENDOR_ENC=JetFlash
E:ID_VENDOR_ID=8564
E:ID_MODEL=Transcend_8GB
E:ID_MODEL_ENC=Transcend\x208GB\x20\x20\x20
E:ID_MODEL_ID=1000
E:ID_REVISION=1100
E:ID_SERIAL=JetFlash_Transcend_8GB_48MSBMWJ2851SPKF-0:0
E:ID_SERIAL_SHORT=48MSBMWJ2851SPKF
E:ID_TYPE=disk
E:ID_INSTANCE=0:0
E:ID_BUS=usb
E:ID_USB_INTERFACES=:080650:
E:ID_USB_INTERFACE_NUM=00
E:ID_USB_DRIVER=usb-storage
E:ID_PATH=pci-0000:00:0b.0-usb-0:1:1.0-scsi-0:0:0:0
E:ID_PART_TABLE_TYPE=dos
E:ID_FS_UUID=2D9370690D5D6E39
E:ID_FS_UUID_ENC=2D9370690D5D6E39
E:ID_FS_TYPE=ntfs
E:ID_FS_USAGE=filesystem
E:ID_PART_ENTRY_SCHEME=dos
E:ID_PART_ENTRY_TYPE=0x7
E:ID_PART_ENTRY_NUMBER=1
E:UDISKS_PRESENTATION_NOPOLICY=0
E:UDISKS_PARTITION=1
E:UDISKS_PARTITION_SCHEME=mbr
E:UDISKS_PARTITION_NUMBER=1
E:UDISKS_PARTITION_TYPE=0x07
E:UDISKS_PARTITION_SIZE=8098152448
E:UDISKS_PARTITION_SLAVE=/sys/devices/pci0000:00/0000:00:0b.0/usb1/1-1/1-1:1.0/host3/target3:0:0/3:0:0:0/block/sdb
E:UDISKS_PARTITION_OFFSET=1048576
E:UDISKS_PARTITION_ALIGNMENT_OFFSET=0
opensuse:~ # cat /dev/.udev/db/c189:1
N:bus/usb/001/002
I:3052871140
E:ID_VENDOR=JetFlash
E:ID_VENDOR_ENC=JetFlash
E:ID_VENDOR_ID=8564
E:ID_MODEL=Mass_Storage_Device
E:ID_MODEL_ENC=Mass\x20Storage\x20Device
E:ID_MODEL_ID=1000
E:ID_REVISION=1100
E:ID_SERIAL=JetFlash_Mass_Storage_Device_48MSBMWJ2851SPKF
E:ID_SERIAL_SHORT=48MSBMWJ2851SPKF
E:ID_BUS=usb
E:ID_USB_INTERFACES=:080650:

Voici le contenu de /dev :

opensuse:~ # ls -lR /dev/disk
/dev/disk:
total 0
drwxr-xr-x 2 root root 620 Apr 10 08:31 by-id
drwxr-xr-x 2 root root 360 Apr 10 08:31 by-path
drwxr-xr-x 2 root root 120 Apr 10 08:31 by-uuid
/dev/disk/by-id:
total 0
lrwxrwxrwx 1 root root 9 Apr 9 15:38 ata-VBOX_CD-ROM_VB2-01700376 -> ../../sr0
lrwxrwxrwx 1 root root 9 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd -> ../../sda
lrwxrwxrwx 1 root root 10 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part1 -> ../../sda1
lrwxrwxrwx 1 root root 11 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part10 -> ../../sda10
lrwxrwxrwx 1 root root 11 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part11 -> ../../sda11
lrwxrwxrwx 1 root root 11 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part12 -> ../../sda12
lrwxrwxrwx 1 root root 10 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part4 -> ../../sda4
lrwxrwxrwx 1 root root 10 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part6 -> ../../sda6
lrwxrwxrwx 1 root root 10 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part7 -> ../../sda7
lrwxrwxrwx 1 root root 10 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part8 -> ../../sda8
lrwxrwxrwx 1 root root 10 Apr 9 15:38 ata-VBOX_HARDDISK_VB50f75dcc-537a53dd-part9 -> ../../sda9
lrwxrwxrwx 1 root root 9 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd -> ../../sda
lrwxrwxrwx 1 root root 10 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part1 -> ../../sda1
lrwxrwxrwx 1 root root 11 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part10 -> ../../sda10
lrwxrwxrwx 1 root root 11 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part11 -> ../../sda11
lrwxrwxrwx 1 root root 11 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part12 -> ../../sda12
lrwxrwxrwx 1 root root 10 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part4 -> ../../sda4
lrwxrwxrwx 1 root root 10 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part6 -> ../../sda6
lrwxrwxrwx 1 root root 10 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part7 -> ../../sda7
lrwxrwxrwx 1 root root 10 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part8 -> ../../sda8
lrwxrwxrwx 1 root root 10 Apr 9 15:38 scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd-part9 -> ../../sda9
lrwxrwxrwx 1 root root 9 Apr 10 08:31 usb-JetFlash_Transcend_8GB_48MSBMWJ2851SPKF-0:0 -> ../../sdb
lrwxrwxrwx 1 root root 10 Apr 10 08:31 usb-JetFlash_Transcend_8GB_48MSBMWJ2851SPKF-0:0-part1 -> ../../sdb1
/dev/disk/by-path:
total 0
lrwxrwxrwx 1 root root 9 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx 1 root root 10 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part1 -> ../../sda1
lrwxrwxrwx 1 root root 11 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part10 -> ../../sda10
lrwxrwxrwx 1 root root 11 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part11 -> ../../sda11
lrwxrwxrwx 1 root root 11 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part12 -> ../../sda12
lrwxrwxrwx 1 root root 10 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part3 -> ../../sda3
lrwxrwxrwx 1 root root 10 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part4 -> ../../sda4
lrwxrwxrwx 1 root root 10 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part5 -> ../../sda5
lrwxrwxrwx 1 root root 10 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part6 -> ../../sda6
lrwxrwxrwx 1 root root 10 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part7 -> ../../sda7
lrwxrwxrwx 1 root root 10 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part8 -> ../../sda8
lrwxrwxrwx 1 root root 10 Apr 9 15:38 pci-0000:00:01.1-scsi-0:0:0:0-part9 -> ../../sda9
lrwxrwxrwx 1 root root 9 Apr 9 15:38 pci-0000:00:01.1-scsi-1:0:0:0 -> ../../sr0
lrwxrwxrwx 1 root root 9 Apr 10 08:31 pci-0000:00:0b.0-usb-0:1:1.0-scsi-0:0:0:0 -> ../../sdb
lrwxrwxrwx 1 root root 10 Apr 10 08:31 pci-0000:00:0b.0-usb-0:1:1.0-scsi-0:0:0:0-part1 -> ../../sdb1
/dev/disk/by-uuid:
total 0
lrwxrwxrwx 1 root root 10 Apr 10 08:31 2D9370690D5D6E39 -> ../../sdb1
lrwxrwxrwx 1 root root 10 Apr 9 15:38 813e9bdb-617e-418a-886f-d7d5e7ba9641 -> ../../sda1
lrwxrwxrwx 1 root root 10 Apr 9 15:38 99168f5b-9860-4701-b8b7-d938d4a536ca -> ../../sda2
lrwxrwxrwx 1 root root 10 Apr 9 15:38 a4e52ae0-19fa-427c-bd30-e1d4193f8d3d -> ../../sda3

Le fichier de configuration principal d'Udev est /etc/udev/udev.conf :

opensuse:~ # cat /etc/udev/udev.conf
# The initial syslog(3) priority: "err", "info", "debug" or its
# numerical equivalent. For runtime debugging, the daemons internal
# state can be changed with: "udevadm control --log-priority=<value>".
udev_log="err"

Les fichiers de règles se trouvent dans /lib/udev/rules.d/ :

opensuse:~ # ls /lib/udev/rules.d/
10-dm.rules 60-persistent-storage.rules 77-mm-pcmcia-device-blacklist.rules 95-keymap.rules
11-dm-lvm.rules 60-persistent-v4l.rules 77-mm-platform-serial-whitelist.rules 95-udev-late.rules
13-dm-disk.rules 61-mobile-action.rules 77-mm-simtech-port-types.rules 95-upower-battery-recall-dell.rules
39-libmtp.rules 61-persistent-storage-edd.rules 77-mm-usb-device-blacklist.rules 95-upower-battery-recall-fujitsu.rules
40-libgphoto2.rules 64-md-raid.rules 77-mm-zte-port-types.rules 95-upower-battery-recall-gateway.rules
40-usb-media-players.rules 65-xorg-wacom.rules 77-nm-olpc-mesh.rules 95-upower-battery-recall-ibm.rules
40-usb_modeswitch.rules 69-xorg-vmmouse.rules 78-sound-card.rules 95-upower-battery-recall-lenovo.rules
42-qemu-usb.rules 70-acl.rules 79-fstab_import.rules 95-upower-battery-recall-toshiba.rules
50-firmware.rules 70-hid2hci.rules 80-drivers.rules 95-upower-csr.rules
50-udev-default.rules 70-printers.rules 80-udisks.rules 95-upower-hid.rules
56-idedma.rules 75-cd-aliases-generator.rules 85-regulatory.rules 95-upower-wup.rules
60-cdrom_id.rules 75-net-description.rules 85-usbmuxd.rules 97-bluetooth-hid2hci.rules
60-floppy.rules 75-persistent-net-generator.rules 90-alsa-restore.rules 97-bluetooth-serial.rules
60-persistent-alsa.rules 75-probe_mtd.rules 90-libgpod.rules 97-bluetooth.rules
60-persistent-input.rules 75-tty-description.rules 90-pulseaudio.rules
60-persistent-serial.rules 77-mm-ericsson-mbm.rules 95-dm-notify.rules
60-persistent-storage-tape.rules 77-mm-longcheer-port-types.rules 95-keyboard-force-release.rules

<note important> Il vous est possible d'ajouter des règles si besoin est. Dans ce cas, créez un fichier 99-local.rules est éditez-le au lieu d'éditer les fichiers existants. </note>

Comme indique le nom de chaque fichier, le contenu est composé de règles à l'attention d'udev. Le fichier des règles par défaut est le 50-udev-default.rules :

opensuse:~ # cat /lib/udev/rules.d/50-udev-default.rules
# do not edit this file, it will be overwritten on update
KERNEL=="pty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty", MODE="0660"
KERNEL=="tty[pqrstuvwxyzabcdef][0123456789abcdef]", GROUP="tty", MODE="0660"
KERNEL=="ptmx",	GROUP="tty", MODE="0666"
KERNEL=="tty",	GROUP="tty", MODE="0666"
KERNEL=="tty[0-9]*",	GROUP="tty", MODE="0620"
KERNEL=="vcs|vcs[0-9]*|vcsa|vcsa[0-9]*", GROUP="tty"
# serial
KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
KERNEL=="mwave",	GROUP="dialout"
KERNEL=="hvc*|hvsi*",	GROUP="dialout"
# virtio serial / console ports
KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}"
# mem
KERNEL=="null|zero|full|random|urandom", MODE="0666"
KERNEL=="mem|kmem|port|nvram",	GROUP="kmem", MODE="0640"
# input
KERNEL=="mouse*|mice|event*",	MODE="0640"
KERNEL=="ts[0-9]*|uinput",	MODE="0640"
KERNEL=="js[0-9]*",	MODE="0644"
# video4linux
SUBSYSTEM=="video4linux",	GROUP="video"
KERNEL=="vttuner*",	GROUP="video"
KERNEL=="vtx*|vbi*",	GROUP="video"
KERNEL=="winradio*",	GROUP="video"
# graphics
KERNEL=="agpgart",	GROUP="video"
KERNEL=="pmu",	GROUP="video"
KERNEL=="nvidia*|nvidiactl*",	GROUP="video"
SUBSYSTEM=="graphics",	GROUP="video"
SUBSYSTEM=="drm",	GROUP="video"
# sound
SUBSYSTEM=="sound",	GROUP="audio"
# DVB (video)
SUBSYSTEM=="dvb", GROUP="video"
# FireWire (firewire-core driver: IIDC devices, AV/C devices)
SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x00010*", GROUP="video"
SUBSYSTEM=="firewire", ATTR{units}=="*0x00b09d:0x00010*", GROUP="video"
SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x010001*", GROUP="video"
SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x014001*", GROUP="video"
# libusb device nodes
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664"
# printer
KERNEL=="parport[0-9]*",	GROUP="lp"
SUBSYSTEM=="printer",	KERNEL=="lp*", GROUP="lp"
SUBSYSTEM=="ppdev",	GROUP="lp"
SUBSYSTEM=="usb",	KERNEL=="lp*", SYMLINK+="usb%k", GROUP="lp"
KERNEL=="lp[0-9]*",	GROUP="lp"
KERNEL=="irlpt[0-9]*",	GROUP="lp"
# hplip and cups 1.4+ use raw USB devices, so permissions should be similar to
# the ones from the old usblp kernel module
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="", IMPORT{program}="usb_id --export %p"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701*:", GROUP="lp", MODE="0664"
# block
SUBSYSTEM=="block", GROUP="disk"
# floppy
SUBSYSTEM=="block", KERNEL=="fd[0-9]", GROUP="floppy"
# cdrom
SUBSYSTEM=="block", KERNEL=="sr[0-9]*", SYMLINK+="scd%n", GROUP="cdrom"
SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="cdrom"
KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
KERNEL=="pktcdvd", GROUP="cdrom"
# tape
KERNEL=="ht[0-9]*|nht[0-9]*", GROUP="tape"
KERNEL=="pt[0-9]*|npt[0-9]*|pht[0-9]*", GROUP="tape"
SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="tape"
# block-related
KERNEL=="sch[0-9]*", GROUP="disk"
SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="0", GROUP="disk"
KERNEL=="pg[0-9]*", GROUP="disk"
KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk"
KERNEL=="rawctl", GROUP="disk"
SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", GROUP="disk"
SUBSYSTEM=="aoe", GROUP="disk", MODE="0220"
SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
# network
KERNEL=="tun",	MODE="0666", OPTIONS+="static_node=net/tun"
KERNEL=="rfkill",	MODE="0644"
# CPU
KERNEL=="cpu[0-9]*",	MODE="0444"
KERNEL=="fuse",	MODE="0666", OPTIONS+="static_node=fuse", \
RUN+="/bin/mount -t fusectl fusectl /sys/fs/fuse/connections"
SUBSYSTEM=="rtc", DRIVERS=="rtc_cmos", SYMLINK+="rtc"
KERNEL=="mmtimer",	MODE="0644"
KERNEL=="rflash[0-9]*",	MODE="0400"
KERNEL=="rrom[0-9]*",	MODE="0400"

Chaque règle prend la forme suivante :

KEY, [KEY, …] NAME [, SYMLINK]

Chaque KEY est un champ au format type=valeur qui doit correspondre à un périphérique unique. La valeur de type peut prendre plusieurs formes :

Type	Description	Exemples
BUS	Type de bus	usb, scsi, ide
KERNEL	Le nom par défault du périphérique donné par le noyau	hda, ttyUSB0, lp0
SUBSYSTEM	Le nom noyau du sous-système, généralement identique à la valeur du BUS	usb, scsi
DRIVER	Le nom du pilote qui contrôle le périphérique	usb-storage
ID	Le numéro du périphérique sur son bus	PCI bus id, USB id
PLACE	Ne concerne que les périphériques USB et donne la position topologique du périphérique sur son bus	S/O
SYSFS{filename}	Le nom du fichier dans /sys pour le périphérique. Ce fichier contient le fabricant, le label, le numéro de série et UUID du périphérique. La vérification de jusqu'à 5 fichiers est possible par règle	S/O
PROGRAM	Ceci permet à Udev d'appeler un programme externe pour nommer un périphérique	S/O
RESULT	Valeur à comparer au résultat de PROGRAM	S/O

NAME et SYMLINK sont utilisées pour stipuler ce que Udev doit faire avec le périphérique :

Type	Description	Exemples
NAME	Le nome du nœud dans /dev	S/O
SYMLINK	Le ou les lien(s) symbolique(s) qui pointe(nt) vers le NAME	S/O

La commande udevadm

Pour obtenir de l'information sur un périphérique il convient d'utiliser la commande udevadm qui a remplacé la commande udevinfo disponible dans CentOS 5 :

opensuse:~ # udevadm info --query=all -n /dev/sda
P: /devices/pci0000:00/0000:00:01.1/host1/target1:0:0/1:0:0:0/block/sda
N: sda
S: disk/by-id/ata-VBOX_HARDDISK_VB50f75dcc-537a53dd
S: disk/by-id/scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd
S: disk/by-path/pci-0000:00:01.1-scsi-0:0:0:0
E: UDEV_LOG=3
E: DEVPATH=/devices/pci0000:00/0000:00:01.1/host1/target1:0:0/1:0:0:0/block/sda
E: MAJOR=8
E: MINOR=0
E: DEVNAME=/dev/sda
E: DEVTYPE=disk
E: SUBSYSTEM=block
E: ID_ATA=1
E: ID_TYPE=disk
E: ID_BUS=ata
E: ID_MODEL=VBOX_HARDDISK
E: ID_MODEL_ENC=VBOX\x20HARDDISK\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20
E: ID_REVISION=1.0
E: ID_SERIAL=VBOX_HARDDISK_VB50f75dcc-537a53dd
E: ID_SERIAL_SHORT=VB50f75dcc-537a53dd
E: ID_ATA_WRITE_CACHE=1
E: ID_ATA_WRITE_CACHE_ENABLED=1
E: ID_ATA_FEATURE_SET_PM=1
E: ID_ATA_FEATURE_SET_PM_ENABLED=1
E: ID_SCSI_COMPAT=SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd
E: ID_PATH=pci-0000:00:01.1-scsi-0:0:0:0
E: ID_PART_TABLE_TYPE=dos
E: UDISKS_PRESENTATION_NOPOLICY=0
E: UDISKS_PARTITION_TABLE=1
E: UDISKS_PARTITION_TABLE_SCHEME=mbr
E: UDISKS_PARTITION_TABLE_COUNT=12
E: UDISKS_ATA_SMART_IS_AVAILABLE=0
E: DEVLINKS=/dev/disk/by-id/ata-VBOX_HARDDISK_VB50f75dcc-537a53dd /dev/disk/by-id/scsi-SATA_VBOX_HARDDISK_VB50f75dcc-537a53dd /dev/disk/by-path/pci-0000:00:01.1-scsi-0:0:0:0

La commande udevadm peut également être utilisée pour connaître toute l'information sysfs concernant un périphérique :

opensuse:~ # udevadm info -a -p /sys/class/input/mouse0/
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/platform/i8042/serio1/input/input1/mouse0':
KERNEL=="mouse0"
SUBSYSTEM=="input"
DRIVER==""
looking at parent device '/devices/platform/i8042/serio1/input/input1':
KERNELS=="input1"
SUBSYSTEMS=="input"
DRIVERS==""
ATTRS{name}=="ImExPS/2 Generic Explorer Mouse"
ATTRS{phys}=="isa0060/serio1/input0"
ATTRS{uniq}==""
ATTRS{modalias}=="input:b0011v0002p0006e0000-e0,1,2,k110,111,112,113,114,r0,1,6,8,amlsfw"
looking at parent device '/devices/platform/i8042/serio1':
KERNELS=="serio1"
SUBSYSTEMS=="serio"
DRIVERS=="psmouse"
ATTRS{description}=="i8042 AUX port"
ATTRS{modalias}=="serio:ty01pr00id00ex00"
ATTRS{bind_mode}=="auto"
ATTRS{protocol}=="ImExPS/2"
ATTRS{rate}=="100"
ATTRS{resolution}=="200"
ATTRS{resetafter}=="5"
ATTRS{resync_time}=="0"
looking at parent device '/devices/platform/i8042':
KERNELS=="i8042"
SUBSYSTEMS=="platform"
DRIVERS=="i8042"
ATTRS{modalias}=="platform:i8042"
looking at parent device '/devices/platform':
KERNELS=="platform"
SUBSYSTEMS==""
DRIVERS==""

Les options de la commande

Les options de la commande udevadm sont :

opensuse:~ # udevadm --help
Usage: udevadm [--help] [--version] [--debug] COMMAND [COMMAND OPTIONS]
info query sysfs or the udev database
trigger request events from the kernel
settle wait for the event queue to finish
control control the udev daemon
monitor listen to kernel and udev events
test simulation run
opensuse:~ # udevadm info --help
Usage: udevadm info OPTIONS
--query=<type> query device information:
name name of device node
symlink pointing to node
path sys device path
property the device properties
all all values
--path=<syspath> sys device path used for query or attribute walk
--name=<name> node or symlink name used for query or attribute walk
--root prepend dev directory to path names
--attribute-walk print all key matches while walking along the chain
of parent devices
--device-id-of-file=<file> print major:minor of device containing this file
--export export key/value pairs
--export-prefix export the key name with a prefix
--export-db export the content of the udev database
--convert-db convert older version of database without a reboot
--help

Système de fichiers /sys

Le système de fichiers virtuel /sys a été introduit avec le noyau Linux 2.6. Son rôle est de décrire le matériel pour udev.

Saisissez la commande suivante :

opensuse:~ # ls -l /sys
total 0
drwxr-xr-x 2 root root 0 Apr 9 15:38 block
drwxr-xr-x 15 root root 0 Apr 9 15:38 bus
drwxr-xr-x 41 root root 0 Apr 9 15:38 class
drwxr-xr-x 4 root root 0 Apr 9 15:38 dev
drwxr-xr-x 8 root root 0 Apr 9 15:38 devices
drwxr-xr-x 5 root root 0 Apr 9 15:38 firmware
drwxr-xr-x 4 root root 0 Apr 10 09:23 fs
drwxr-xr-x 5 root root 0 Apr 9 15:38 kernel
drwxr-xr-x 97 root root 0 Apr 9 15:38 module
drwxr-xr-x 2 root root 0 Apr 9 15:38 power

Chaque répertoire contient des informations :

block

contient des informations sur les périphériques bloc

bus

contient des informations sur les bus de données

class

contient des informations sur des classes de matériel

devices

contient des informations sur la position des périphériques sur les bus

firmware

contient, entre autre, des informations sur l'ACPI

module

contient des informations sur les modules du noyau

power

contient des informations sur la gestion de l'énergie

fs

contient des informations sur les systèmes de fichiers

Pour illustrer ceci, saisissez la commande suivante :

opensuse:~ # cat /sys/block/sda/sda1/size
223232

Ce chiffre correspond aux nombre de secteurs.

Limitation des ressources

Les ressources disponibles aux utilisateurs peuvent être limitées par l'utilisation de la commande ulimit.

La commande ulimit gère deux types de limite, la limite hard en utilisant l'option -H et la limite soft en utilisant l'option -S. Seul root peut positionner une limite hard et ceci à condition que la limite ne dépasse pas les ressources réelles.

La limite soft est la limite imposée à l'utilisateur par défaut tandis que la limite hard est la limite que l'utilisateur peut atteindre en utilisant la commande ulimit lui-même.

L'utilisateur root peut paramétrer les limites accordées en éditant la fichier /etc/security/limits.conf :

opensuse:~ # cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file

<note important> La valeur de la limite peut être un nombre ou le mot unlimited. </note>

Par exemple, si root inscrit les deux ligne suivantes dans le fichier /etc/security/limits.conf :

...
trainee soft nofile 1024
trainee hard nofile 4096
...

la limite du nombre de fichiers ouverts simultanément par trainee est de 1 024. Par contre, trainee a la possibilité d'augmenter cette limite jusqu'à 4 096 en utilisant la commande suivante :

$ ulimit -n 4096

Pour consulter la liste des limites actuelles, il convient d'utiliser la commande ulimit avec l'option -a :

root@debian:~# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 16382
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

Options de la commande

<note important> openSUSE ne fournit pas d'information (ni help, ni man, ni info) concernant la commande ulimits. Les informations suivantes sont celles de CentOS/Redhat. </note>

Les options de ulimit sont :

[root@centos ~]# help ulimit
ulimit: ulimit [-SHacdefilmnpqrstuvx] [limit]
Modify shell resource limits.
Provides control over the resources available to the shell and processes
it creates, on systems that allow such control.
Options:
-S	use the `soft' resource limit
-H	use the `hard' resource limit
-a	all current limits are reported
-b	the socket buffer size
-c	the maximum size of core files created
-d	the maximum size of a process's data segment
-e	the maximum scheduling priority (`nice')
-f	the maximum size of files written by the shell and its children
-i	the maximum number of pending signals
-l	the maximum size a process may lock into memory
-m	the maximum resident set size
-n	the maximum number of open file descriptors
-p	the pipe buffer size
-q	the maximum number of bytes in POSIX message queues
-r	the maximum real-time scheduling priority
-s	the maximum stack size
-t	the maximum amount of cpu time in seconds
-u	the maximum number of user processes
-v	the size of virtual memory
-x	the maximum number of file locks
If LIMIT is given, it is the new value of the specified resource; the
special LIMIT values `soft', `hard', and `unlimited' stand for the
current soft limit, the current hard limit, and no limit, respectively.
Otherwise, the current value of the specified resource is printed. If
no option is given, then -f is assumed.
Values are in 1024-byte increments, except for -t, which is in seconds,
-p, which is in increments of 512 bytes, and -u, which is an unscaled
number of processes.
Exit Status:
Returns success unless an invalid option is supplied or an error occurs.

~~DISCUSSION:off~~

Donner votre Avis

{(rater>id=opensuse_11_l117|name=cette page|type=rate|trace=user|tracedetails=1)}