Dernière mise-à-jour : 2020/01/30 03:28
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.
Important : Les périphériques qui nécessitent à ce que l'ordinateur soit éteint afin des les brancher/débrancher sont appelés communément Cold Plug Devices. Les périphériques qui peuvent être brancher/débrancher à chaud sont appelés des Hot Plug Devices.
Consultez le contenu du répertoire /dev :
SLES12SP1:~ # ls -l /dev | more total 0 crw------- 1 root root 10, 235 Oct 24 18:15 autofs drwxr-xr-x 2 root root 120 Oct 24 18:15 block drwxr-xr-x 2 root root 80 Oct 24 18:15 bsg crw------- 1 root root 10, 234 Oct 24 18:15 btrfs-control drwxr-xr-x 3 root root 60 Oct 24 18:15 bus lrwxrwxrwx 1 root root 3 Oct 24 18:15 cdrom -> sr0 drwxr-xr-x 2 root root 3340 Oct 24 18:40 char crw------- 1 root root 5, 1 Oct 24 18:15 console lrwxrwxrwx 1 root root 11 Oct 24 18:15 core -> /proc/kcore drwxr-xr-x 2 root root 60 Oct 24 18:15 cpu crw------- 1 root root 10, 62 Oct 24 18:15 cpu_dma_latency lrwxrwxrwx 1 root root 14 Oct 24 18:15 device-mapper -> mapper/control drwxr-xr-x 5 root root 100 Oct 24 18:15 disk lrwxrwxrwx 1 root root 3 Oct 24 18:15 dvd -> sr0 crw-rw---- 1 root video 29, 0 Oct 24 18:15 fb0 lrwxrwxrwx 1 root root 13 Oct 24 18:15 fd -> /proc/self/fd crw-rw-rw- 1 root root 1, 7 Oct 24 18:15 full crw-rw-rw- 1 root root 10, 229 Oct 24 18:15 fuse crw------- 1 root root 251, 0 Oct 24 18:40 hidraw0 crw------- 1 root root 10, 228 Oct 24 18:15 hpet drwxr-xr-x 2 root root 0 Oct 24 18:15 hugepages prw------- 1 root root 0 Oct 24 18:15 initctl --More--
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 Oct 24 18:15 sda1 ... crw-rw-rw- 1 root tty 5, 0 Oct 24 18:15 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 :
Cette commande vous renseigne sur les adaptateurs reliés aux bus PCI, AGP et PCI express :
SLES12SP1:~ # 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 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 82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] (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é :
SLES12SP1:~ # 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 Kernel modules: e1000
ou :
SLES12SP1:~ # 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 Kernel modules: e1000
Les options de cette commande sont :
SLES12SP1:~ # 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
Cette commande vous renseigne sur les adaptateurs reliés au bus usb :
SLES12SP1:~ # lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 003: ID 80ee:0021 VirtualBox USB Tablet Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub SLES12SP1:~ # lsusb -vt /: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=ohci-pci/12p, 12M |__ Port 1: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/12p, 480M
Les options de cette commande sont :
SLES12SP1:~ # lsusb --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, --tree Dump the physical USB device hierarchy as a tree -V, --version Show version of program -h, --help Show usage and help
La commande dmidecode lit la table DMI (Desktop Management Interface) aussi appelée SMBIOS (System Management BIOS) et fourni les informations sur :
SLES12SP1:~ # dmidecode # dmidecode 2.12 SMBIOS 2.5 present. 10 structures occupying 450 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: 1AB45D82-1CA4-4C86-8B78-9A8E4C0CE646 Wake-up Type: Power Switch SKU Number: Not Specified Family: Virtual Machine Handle 0x0008, DMI type 2, 15 bytes Base Board Information Manufacturer: Oracle Corporation Product Name: VirtualBox Version: 1.2 Serial Number: 0 Asset Tag: Not Specified Features: Board is a hosting board Location In Chassis: Not Specified Chassis Handle: 0x0003 Type: Motherboard Contained Object Handles: 0 Handle 0x0003, DMI type 3, 13 bytes Chassis Information Manufacturer: Oracle Corporation Type: Other Lock: Not Present Version: Not Specified Serial Number: Not Specified Asset Tag: Not Specified Boot-up State: Safe Power Supply State: Safe Thermal State: Safe Security Status: None Handle 0x0007, DMI type 126, 42 bytes Inactive Handle 0x0005, DMI type 126, 15 bytes Inactive Handle 0x0006, DMI type 126, 28 bytes Inactive Handle 0x0002, DMI type 11, 7 bytes OEM Strings String 1: vboxVer_5.1.26 String 2: vboxRev_117224 Handle 0x0008, DMI type 128, 8 bytes OEM-specific Type Header and Data: 80 08 08 00 FF F8 15 00 Handle 0xFEFF, DMI type 127, 4 bytes End Of Table
Les options de cette commande sont :
SLES12SP1:~ # 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
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.
SLES12SP1:~ # ls /proc 1 205 2450 271 7 cgroups kallsyms schedstat 10 206 2451 272 723 cmdline kcore scsi 11 209 2452 273 725 config.gz key-users self 12 2095 25 274 750 consoles kmsg slabinfo 13 21 2521 275 760 cpuinfo kpagecount softirqs 14 218 2522 276 773 crypto kpageflags stat 15 22 2558 277 8 devices latency_stats swaps 16 220 260 278 870 diskstats loadavg sys 1618 2200 2609 3 872 dma locks sysrq-trigger 1625 222 261 35 873 driver meminfo sysvipc 1626 224 262 36 875 execdomains misc timer_list 1649 2248 263 362 876 fb modules timer_stats 17 228 264 37 9 filesystems mounts tty 18 23 266 380 93 fs mtrr uptime 19 232 267 384 acpi interrupts net version 195 24 268 5 asound iomem pagetypeinfo vmallocinfo 196 2446 269 56 buddyinfo ioports partitions vmstat 2 2449 270 57 bus irq sched_debug zoneinfo
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.
Ce répertoire contient des informations sur la gestion de l'énérgie, les températures, les vitesses de ventilateurs, la charge des batteries.
Ce répertoire contient un sous-répertoire par bus.
Ce répertoire contient des informations sur le réseau.
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.
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 :
SLES12SP1:~ # cat /etc/sysctl.conf #### # # /etc/sysctl.conf is meant for local sysctl settings # # sysctl reads settings from the following locations: # /boot/sysctl.conf-<kernelversion> # /lib/sysctl.d/*.conf # /usr/lib/sysctl.d/*.conf # /usr/local/lib/sysctl.d/*.conf # /etc/sysctl.d/*.conf # /run/sysctl.d/*.conf # /etc/sysctl.conf # # To disable or override a distribution provided file just place a # file with the same name in /etc/sysctl.d/ # # See sysctl.conf(5), sysctl.d(5) and sysctl(8) for more information # #### kernel.sysrq = 0 net.ipv4.ip_forward = 0 net.ipv4.tcp_syncookies = 1 net.ipv6.conf.all.forwarding = 0
Les options de la commande sysctl sont :
SLES12SP1:~ # sysctl --help Usage: sysctl [options] [variable[=value] ...] Options: -a, --all display all variables -A alias of -a -X alias of -a --deprecated include deprecated parameters to listing -b, --binary print value without new line -e, --ignore ignore unknown variables errors -N, --names print variable names without values -n, --values print only values of a variables -p, --load[=<file>] read values from file -f alias of -p --system read values from all system directories -r, --pattern <expression> select setting that match expression -q, --quiet do not echo variable set -w, --write enable writing a value to variable -o does nothing -x does nothing -d alias of -h -h, --help display this help and exit -V, --version output version information and exit For more details see sysctl(8).
Important : Consultez la page de la traduction du manuel de sysctl ici pour comprendre la commande.
SLES12SP1:~ # cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 76 model name : Intel(R) Atom(TM) x5-Z8350 CPU @ 1.44GHz stepping : 4 cpu MHz : 1439.999 cache size : 1024 KB fpu : yes fpu_exception : yes cpuid level : 11 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 rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 x2apic movbe popcnt aes rdrand hypervisor lahf_lm 3dnowprefetch bogomips : 2879.99 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management:
SLES12SP1:~ # cat /proc/interrupts CPU0 0: 46 IO-APIC-edge timer 1: 10 IO-APIC-edge i8042 8: 0 IO-APIC-edge rtc0 9: 1 IO-APIC-fasteoi acpi 12: 156 IO-APIC-edge i8042 14: 0 IO-APIC-edge ata_piix 15: 2288 IO-APIC-edge ata_piix 19: 2846 IO-APIC-fasteoi ehci_hcd:usb1, eth0 21: 17309 IO-APIC-fasteoi ahci, snd_intel8x0 22: 53 IO-APIC-fasteoi ohci_hcd:usb2 NMI: 0 Non-maskable interrupts LOC: 31134 Local timer interrupts SPU: 0 Spurious interrupts PMI: 0 Performance monitoring interrupts IWI: 2129 IRQ work interrupts RTR: 0 APIC ICR read retries 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 THR: 0 Hypervisor callback interrupts ERR: 0 MIS: 0
Important : Un pilote de périphérique demande au processeur de fournir un service en utilisant un IRQ. Quand la demande est faite, le processeur interrompe ses activités et passe le contrôle au pilote identifié par l'IRQ. Techniquement l'attribution d'un IRQ à un périphérique doit être exclusive. Dans le cas où deux périphériques demandent un service en même temps, c'est le périphérique ayant l'IRQ le plus bas qui est prioritaire.
SLES12SP1:~ # cat /proc/dma 4: cascade
SLES12SP1:~ # cat /proc/ioports | more 0000-0cf7 : PCI Bus 0000:00 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 --More--
Important : Si deux périphériques ont le même port, les deux périphériques seront inutilisables.
SLES12SP1:~ # 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 21 sg 29 fb 99 ppdev 116 alsa 128 ptm 136 pts 180 usb 189 usb_device 251 hidraw 252 bsg 253 watchdog 254 rtc Block devices: 259 blkext 8 sd 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 254 device-mapper
SLES12SP1:~ # cat /proc/modules | more xt_pkttype 12504 3 - Live 0xffffffffa04ad000 xt_LOG 17852 12 - Live 0xffffffffa04b7000 xt_limit 12711 12 - Live 0xffffffffa04b2000 af_packet 39847 0 - Live 0xffffffffa04a2000 iscsi_ibft 12862 0 - Live 0xffffffffa049d000 iscsi_boot_sysfs 16051 1 iscsi_ibft, Live 0xffffffffa0498000 ip6t_REJECT 12939 3 - Live 0xffffffffa0493000 xt_tcpudp 12884 7 - Live 0xffffffffa048e000 nf_conntrack_ipv6 14798 3 - Live 0xffffffffa0485000 nf_defrag_ipv6 34651 1 nf_conntrack_ipv6, Live 0xffffffffa0477000 ip6table_raw 12683 1 - Live 0xffffffffa0472000 ipt_REJECT 12541 3 - Live 0xffffffffa046d000 iptable_raw 12678 1 - Live 0xffffffffa0468000 xt_CT 12956 4 - Live 0xffffffffa0463000 iptable_filter 12810 1 - Live 0xffffffffa045e000 ip6table_mangle 12700 0 - Live 0xffffffffa0459000 nf_conntrack_ipv4 15012 3 - Live 0xffffffffa0450000 nf_defrag_ipv4 12758 1 nf_conntrack_ipv4, Live 0xffffffffa044b000 ip_tables 23019 2 iptable_raw,iptable_filter, Live 0xffffffffa041d000 xt_conntrack 12760 6 - Live 0xffffffffa0334000 nf_conntrack 114978 4 nf_conntrack_ipv6,xt_CT,nf_conntrack_ipv4,xt_conntrack, Li ve 0xffffffffa0429000 ip6table_filter 12815 1 - Live 0xffffffffa0322000 --More--
SLES12SP1:~ # cat /proc/diskstats 8 0 sda 16771 21164 6999936 2273700 2373 7375 1206384 910412 0 287112 3183788 8 1 sda1 106 141 1976 140 0 0 0 0 0 128 140 8 2 sda2 16576 20913 6996368 2273432 2264 7375 1206384 908668 0 285324 3181776 11 0 sr0 0 0 0 0 0 0 0 0 0 0 0
SLES12SP1:~ # cat /proc/partitions major minor #blocks name 8 0 20971520 sda 8 1 2103296 sda1 8 2 18867200 sda2 11 0 1048575 sr0
SLES12SP1:~ # cat /proc/swaps Filename Type Size Used Priority /dev/sda1 partition 2103292 0 -1
SLES12SP1:~ # cat /proc/loadavg 0.00 0.04 0.12 1/100 2624
SLES12SP1:~ # cat /proc/meminfo MemTotal: 1686744 kB MemFree: 1015144 kB MemAvailable: 1494572 kB Buffers: 876 kB Cached: 585424 kB SwapCached: 0 kB Active: 479792 kB Inactive: 130412 kB Active(anon): 24348 kB Inactive(anon): 9392 kB Active(file): 455444 kB Inactive(file): 121020 kB Unevictable: 80 kB Mlocked: 80 kB SwapTotal: 2103292 kB SwapFree: 2103292 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 23984 kB Mapped: 11980 kB Shmem: 9836 kB Slab: 42960 kB SReclaimable: 31172 kB SUnreclaim: 11788 kB KernelStack: 792 kB PageTables: 2292 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 2946664 kB Committed_AS: 108620 kB VmallocTotal: 34359738367 kB VmallocUsed: 0 kB VmallocChunk: 0 kB HardwareCorrupted: 0 kB AnonHugePages: 0 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 55232 kB DirectMap2M: 1779712 kB
SLES12SP1:~ # cat /proc/version Linux version 3.12.74-60.64.40-default (geeko@buildhost) (gcc version 4.8.5 (SUSE Linux) ) #1 SMP Wed May 10 05:07:16 UTC 2017 (4eb35ec)
Les informations brutes stockées dans /proc peuvent être interprétées grâce à l'utilisation des commandes dites de gestion des performances :
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 :
SLES12SP1:~ # free -m total used free shared buffers cached Mem: 1647 656 990 9 0 602 -/+ buffers/cache: 52 1594 Swap: 2053 0 2053
Dans le cas de cet exemple, nous pouvons constater que l’affichage montre :
Les options de cette commande sont :
SLES12SP1:~ # free --help Usage: free [options] Options: -b, --bytes show output in bytes -k, --kilo show output in kilobytes -m, --mega show output in megabytes -g, --giga show output in gigabytes --tera show output in terabytes -h, --human show human-readable output --si use powers of 1000 not 1024 -l, --lohi show detailed low and high memory statistics -o, --old use old format (without -/+buffers/cache line) -t, --total show total for RAM + swap -s N, --seconds N repeat printing every N seconds -c N, --count N repeat printing N times, then exit --help display this help and exit -V, --version output version information and exit For more details see free(1).
Chacune des ces commandes indique la charge moyenne du ou des processeurs depuis 1 minute, 5 minutes et 15 minutes :
SLES12SP1:~ # uptime 18:59pm up 0:43, 1 user, load average: 0.00, 0.01, 0.09 SLES12SP1:~ # SLES12SP1:~ # w 18:59:28 up 44 min, 1 user, load average: 0.00, 0.01, 0.09 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT trainee pts/0 2.2.0.10.rev.sfr 18:41 0.00s 0.40s 0.03s sshd: trainee [priv]
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 :
Les options de ces commandes sont :
SLES12SP1:~ # 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 GNU coreutils online help: <http://www.gnu.org/software/coreutils/> Report uptime translation bugs to <http://translationproject.org/team/> For complete documentation, run: info '(coreutils) uptime invocation' SLES12SP1:~ # w --help Usage: w [options] Options: -h, --no-header do not print header -u, --no-current ignore current process username -s, --short short format -n, --no-truncat non truncated listing (large) -f, --from show remote hostname field -o, --old-style old style output -i, --ip-addr display IP address instead of hostname (if possible) --help display this help and exit -V, --version output version information and exit For more details see w(1).
La commande iostat n'est pas installée par défaut sous SLES. Installez donc le paquet sysstat :
SLES12SP1:~ # iostat If 'iostat' is not a typo you can use command-not-found to lookup the package that contains it, like this: cnf iostat SLES12SP1:~ # cnf iostat The program 'iostat' can be found in following packages: * sysstat [ path: /usr/bin/iostat, repository: zypp (SLES12-SP1-12.1-0) ] * sysstat [ path: /usr/bin/iostat, repository: zypp (SUSE_Linux_Enterprise_Server_12_SP1_x86_64:SLES12-SP1-Pool) ] * sysstat [ path: /usr/bin/iostat, repository: zypp (SUSE_Linux_Enterprise_Server_12_SP1_x86_64:SLES12-SP1-Updates) ] Try installing with: zypper install sysstat SLES12SP1:~ # zypper install sysstat Refreshing service 'SUSE_Linux_Enterprise_Server_12_SP1_x86_64'. 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: 252.8 KiB. Already cached: 0 B. After the operation, additional 964.8 KiB will be used. Continue? [y/n/? shows all options] (y): y Retrieving package sysstat-10.2.1-9.2.x86_64 (1/1), 252.8 KiB (964.8 KiB unpacked) Retrieving: sysstat-10.2.1-9.2.x86_64.rpm ................................[done] Checking for file conflicts: .............................................[done] (1/1) Installing: sysstat-10.2.1-9.2.x86_64 ..............................[done]
La commande iostat affiche des statistiques sur l'utilisation des disques, des terminaux et des lecteurs de cartouche :
SLES12SP1:~ # iostat Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.23 0.16 1.18 2.63 0.00 95.80 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 6.12 1017.47 222.36 3543976 774512
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 :
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.
SLES12SP1:~ # hdparm -t /dev/sda /dev/sda: Timing buffered disk reads: 722 MB in 3.00 seconds = 240.46 MB/sec
Au-dessous du rapport d'utilisation du CPU de la sortie de la commande iostat 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 :
Les options de cette commande sont :
SLES12SP1:~ # iostat --help Usage: iostat [ options ] [ <interval> [ <count> ] ] Options are: [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ [ -T ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ] [ <device> [...] | ALL ]
La commande vmstat affiche des statistiques sur la mémoire, la pagination et la charge ponctuelle du processeur :
SLES12SP1:~ # 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 915724 420 712804 0 0 1151 210 21 61 0 1 96 2 0 0 0 0 915700 420 712844 0 0 0 0 13 15 0 1 99 0 0 0 0 0 915700 420 712844 0 0 0 0 9 13 0 0 100 0 0 0 0 0 915700 420 712844 0 0 0 0 16 22 0 0 100 0 0 0 0 0 915700 420 712844 0 0 0 0 10 13 0 0 100 0 0 0 0 0 915700 420 712844 0 0 0 0 9 11 0 0 100 0 0 0 0 0 915700 420 712844 0 0 0 0 11 15 0 1 99 0 0 0 0 0 915700 420 712844 0 0 0 0 18 24 0 0 100 0 0 0 0 0 915080 420 713632 0 0 0 1704 31 58 0 3 24 73 0 0 0 0 915080 420 713632 0 0 0 0 9 8 0 0 100 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 :
Les champs relatifs à la mémoire sont les suivants :
Les champs relatifs au swap sont les suivants :
Les champs relatifs aux Entrées/Sorties (E/S) sont les suivants :
Les champs relatifs au système sont les suivants :
Les champs relatifs au CPU sont les suivants :
Les options de cette commande sont :
SLES12SP1:~ # vmstat --help Usage: vmstat [options] [delay [count]] Options: -a, --active active/inactive memory -f, --forks number of forks since boot -m, --slabs slabinfo -n, --one-header do not redisplay header -s, --stats event counter statistics -d, --disk disk statistics -D, --disk-sum summarize disk statistics -p, --partition <dev> partition specific statistics -S, --unit <char> define display unit -w, --wide wide output -t, --timestamp show timestamp -h, --help display this help and exit -V, --version output version information and exit For more details see vmstat(8).
Important : Par défaut la commande vmstat affiche des informations depuis le démarrage du système.
La commande mpstat affiche des statistiques détaillées sur le CPU :
SLES12SP1:~ # mpstat Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 09:37:30 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:37:30 all 0.21 0.15 1.01 2.45 0.00 0.14 0.00 0.00 0.00 96.03
Dans le cas où vous avez plusieurs processeurs ou coeurs, vous pouvez visualiser ces mêmes informations par unité de traitement :
SLES12SP1:~ # mpstat -P ALL Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 09:38:03 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:38:03 all 0.21 0.15 1.01 2.43 0.00 0.14 0.00 0.00 0.00 96.06 09:38:03 0 0.21 0.15 1.01 2.43 0.00 0.14 0.00 0.00 0.00 96.06
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 :
SLES12SP1:~ # mpstat -P ALL 2 5 Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 09:38:54 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:38:56 all 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 99.50 09:38:56 0 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 99.50 09:38:56 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:38:58 all 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 99.50 09:38:58 0 0.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 99.50 09:38:58 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:39:00 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:39:00 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:39:00 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:39:02 all 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:39:02 0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 100.00 09:39:02 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 09:39:04 all 0.00 0.00 0.00 0.49 0.00 0.49 0.00 0.00 0.00 99.01 09:39:04 0 0.00 0.00 0.00 0.49 0.00 0.49 0.00 0.00 0.00 99.01 Average: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle Average: all 0.00 0.00 0.20 0.10 0.00 0.10 0.00 0.00 0.00 99.60 Average: 0 0.00 0.00 0.20 0.10 0.00 0.10 0.00 0.00 0.00 99.60
Les options de cette commande sont :
SLES12SP1:~ # mpstat --help Usage: mpstat [ options ] [ <interval> [ <count> ] ] Options are: [ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ] [ -P { <cpu> [,...] | ON | ALL } ]iffrement
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/lib64/sa/sadc permet de collecter les informations :
SLES12SP1:~ # ls /usr/lib64/sa sa1 sa2 sadc
Le script /usr/lib64/sa/sa1 exécute la commande sadc. Ce script prend deux options :
Option | Description |
---|---|
-t | L'interval entre les collectes |
-n | Nombre de collectes |
Le script /usr/lib64/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.
Copiez le fichier /etc/sysstat/sysstat.cron vers /etc/cron.d/systat :
SLES12SP1:~ # cp /etc/sysstat/sysstat.cron /etc/cron.d/sysstat
Modifiez le fichier /etc/cron.d/sysstat ainsi :
SLES12SP1:~ # vi /etc/cron.d/sysstat SLES12SP1:~ # cat /etc/cron.d/sysstat # crontab for sysstat # Activity reports every 10 minutes everyday # */10 * * * * root [ -x /usr/lib64/sa/sa1 ] && exec /usr/lib64/sa/sa1 -S ALL 1 1 */2 * * * * root [ -x /usr/lib64/sa/sa1 ] && exec /usr/lib64/sa/sa1 -S ALL 1 1 # Update reports every 6 hours 55 5,11,17,23 * * * root [ -x /usr/lib64/sa/sa2 ] && exec /usr/lib64/sa/sa2 -A
Attendez deux minutes puis saisissez les commandes suivantes :
SLES12SP1:~ # sar Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 14:38:01 CPU %user %nice %system %iowait %steal %idle 14:40:01 all 0.04 0.00 0.18 0.07 0.00 99.71 Average: all 0.04 0.00 0.18 0.07 0.00 99.71
SLES12SP1:~ # sar -u 5 3 Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 14:41:52 CPU %user %nice %system %iowait %steal %idle 14:41:57 all 0.00 0.00 0.00 0.00 0.00 100.00 14:42:02 all 1.02 0.00 1.23 0.00 0.00 97.75 14:42:07 all 0.00 0.00 0.20 0.00 0.00 99.80 Average: all 0.34 0.00 0.47 0.00 0.00 99.19
SLES12SP1:~ # sar -r 5 3 Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 14:47:55 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 14:48:00 840964 845780 50.14 420 730588 103676 2.74 612208 143996 0 14:48:05 839992 846752 50.20 420 730600 104456 2.76 612244 143976 52 14:48:10 840088 846656 50.19 420 730600 104456 2.76 612464 143976 52 Average: 840348 846396 50.18 420 730596 104196 2.75 612305 143983 35
SLES12SP1:~ # sar -w 5 3 Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 14:48:36 proc/s cswch/s 14:48:41 0.00 16.60 14:48:46 0.00 15.60 14:48:51 0.40 20.48 Average: 0.13 17.56
SLES12SP1:~ # sar -b 5 3 Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 14:49:28 tps rtps wtps bread/s bwrtn/s 14:49:33 0.00 0.00 0.00 0.00 0.00 14:49:38 0.00 0.00 0.00 0.00 0.00 14:49:43 0.00 0.00 0.00 0.00 0.00 Average: 0.00 0.00 0.00 0.00 0.00
SLES12SP1:~ # sar -d 5 3 Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 14:50:15 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 14:50:20 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 14:50:20 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 14:50:25 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 14:50:25 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 14:50:30 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.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
SLES12SP1:~ # sar -p 5 3 Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 14:51:12 CPU %user %nice %system %iowait %steal %idle 14:51:17 all 0.00 0.00 0.20 0.00 0.00 99.80 14:51:22 all 0.00 0.00 0.20 0.40 0.00 99.40 14:51:27 all 0.00 0.00 0.00 0.00 0.00 100.00 Average: all 0.00 0.00 0.13 0.13 0.00 99.73
SLES12SP1:~ # sar -v 5 3 Linux 3.12.74-60.64.40-default (SLES12SP1.fenestros.loc) 10/26/17 _x86_64_ (1 CPU) 14:52:04 dentunusd file-nr inode-nr pty-nr 14:52:09 38542 704 42844 1 14:52:14 38542 704 42844 1 14:52:19 38542 704 42844 1 Average: 38542 704 42844 1
Les options de cette commande sont :
SLES12SP1:~ # sar --help Usage: sar [ options ] [ <interval> [ <count> ] ] Options are: [ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -F ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ] [ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ] [ -I { <int> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ] [ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ] [ -i <interval> ] [ -s [ <hh:mm:ss> ] ] [ -e [ <hh:mm:ss> ] ]
Dans ce cas utilisez les commandes suivantes :
Dans ce cas utilisez les commandes suivantes :
Utilisez la commande :
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 :
A faire : 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.
Depuis le noyau Linux 2.6 Linux 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 :
Les rôles de chaque composant sont les suivants :
Lors de démarrage de Linux, Udev joue un rôle important :
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 et utilise les informations contenues dans le fichier /lib/modules/`uname -r`/modules.alias pour trouver le pilote nécessaire :
Le fichier de configuration principal d'Udev est /etc/udev/udev.conf :
SLES12SP1:~ # cat /etc/udev/udev.conf # see udev(7) for details #udev_log="info"
Les fichiers de règles se trouvent dans /lib/udev/rules.d/ :
SLES12SP1:~ # ls /lib/udev/rules.d/ 10-dm.rules 60-persistent-alsa.rules 70-kdump.rules 85-usb_autosuspend_devices.rules 11-dm-lvm.rules 60-persistent-input.rules 70-power-switch.rules 85-usb_elotouch_wakeup.rules 11-dm-mpath.rules 60-persistent-serial.rules 70-printers.rules 85-usbmuxd.rules 13-dm-disk.rules 60-persistent-storage-tape.rules 70-uaccess.rules 90-alsa-restore.rules 40-libgphoto2.rules 60-persistent-storage.rules 71-seat.rules 90-haveged.rules 40-usb-blacklist.rules 60-persistent-v4l.rules 73-seat-late.rules 90-libinput-model-quirks.rules 42-hd-audio-pm.rules 60-ssd-scheduler.rules 73-seat-numlock.rules 90-mcelog.rules 42-usb-hid-pm.rules 61-accelerometer.rules 75-net-description.rules 90-pulseaudio.rules 50-iscsi-firmware-login.rules 61-gnome-bluetooth-rfkill.rules 75-persistent-net-generator.rules 90-vconsole.rules 50-udev-default.rules 63-md-raid-arrays.rules 75-probe_mtd.rules 95-dm-notify.rules 55-scsi-sg3_id.rules 64-btrfs.rules 75-tty-description.rules 95-udev-late.rules 56-idedma.rules 64-md-raid-assembly.rules 78-sound-card.rules 95-upower-csr.rules 56-multipath.rules 65-wacom.rules 80-drivers.rules 95-upower-hid.rules 58-scsi-sg3_symlink.rules 66-kpartx.rules 80-hotplug-cpu-mem.rules 95-upower-wup.rules 60-cdrom_id.rules 67-kpartx-compat.rules 80-libinput-device-groups.rules 97-hid2hci.rules 60-drm.rules 69-dm-lvm-metad.rules 80-net-setup-link.rules 99-iwlwifi-led.rules 60-keyboard.rules 69-libmtp.rules 80-udisks2.rules 99-systemd.rules 60-openct.rules 69-xorg-vmmouse.rules 81-mptctl.rules
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.
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 :
SLES12SP1:~ # cat /lib/udev/rules.d/50-udev-default.rules | more # do not edit this file, it will be overwritten on update SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}" # select "system RTC" or just use the first one SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc" SUBSYSTEM=="rtc", KERNEL=="rtc0", SYMLINK+="rtc", OPTIONS+="link_priority=-100" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id" ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}" ACTION!="add", GOTO="default_permissions_end" SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666" SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666" SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620" SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty" KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout" SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640" SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0664" SUBSYSTEM=="video4linux", GROUP="video" SUBSYSTEM=="misc", KERNEL=="agpgart", GROUP="video" SUBSYSTEM=="graphics", GROUP="video" SUBSYSTEM=="drm", GROUP="video" SUBSYSTEM=="dvb", GROUP="video" SUBSYSTEM=="sound", GROUP="audio", \ OPTIONS+="static_node=snd/seq", OPTIONS+="static_node=snd/timer" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664" --More--
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 |
Pour obtenir de l'information sur un périphérique il convient d'utiliser la commande udevadm :
SLES12SP1:~ # udevadm info --query=all -n /dev/sda P: /devices/pci0000:00/0000:00:0d.0/ata1/host0/target0:0:0/0:0:0:0/block/sda N: sda S: disk/by-id/ata-VBOX_HARDDISK_VB10a694bd-6639b517 S: disk/by-id/scsi-0ATA_VBOX_HARDDISK_VB10a694bd-6639b517 S: disk/by-id/scsi-1ATA_VBOX_HARDDISK_VB10a694bd-6639b517 S: disk/by-id/scsi-SATA_VBOX_HARDDISK_VB10a694bd-6639b517 S: disk/by-path/pci-0000:00:0d.0-ata-1.0 S: disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0 E: DEVLINKS=/dev/disk/by-id/ata-VBOX_HARDDISK_VB10a694bd-6639b517 /dev/disk/by-id/scsi-0ATA_VBOX_HARDDISK_VB10a694bd-6639b517 /dev/disk/by-id/scsi-1ATA_VBOX_HARDDISK_VB10a694bd-6639b517 /dev/disk/by-id/scsi-SATA_VBOX_HARDDISK_VB10a694bd-6639b517 /dev/disk/by-path/pci-0000:00:0d.0-ata-1.0 /dev/disk/by-path/pci-0000:00:0d.0-scsi-0:0:0:0 E: DEVNAME=/dev/sda E: DEVPATH=/devices/pci0000:00/0000:00:0d.0/ata1/host0/target0:0:0/0:0:0:0/block/sda E: DEVTYPE=disk E: ID_ATA=1 E: ID_BUS=ata E: ID_MODEL=VBOX_HARDDISK E: ID_MODEL_ENC=VBOX\x20HARDDISK\x20\x20\x20 E: ID_PART_TABLE_TYPE=dos E: ID_PART_TABLE_UUID=000093fa E: ID_PATH=pci-0000:00:0d.0-ata-1.0 E: ID_PATH_COMPAT=pci-0000:00:0d.0-scsi-0:0:0:0 E: ID_PATH_TAG=pci-0000_00_0d_0-ata-1_0 E: ID_REVISION=1.0 E: ID_SCSI=1 E: ID_SCSI_COMPAT=SATA_VBOX_HARDDISK_VB10a694bd-6639b517 E: ID_SCSI_COMPAT_TRUNCATED=SATA_VBOX_HARDDISK_VB10a694bd-6639b517 E: ID_SCSI_DI=1 E: ID_SCSI_SN=1 E: ID_SERIAL=VBOX_HARDDISK_VB10a694bd-6639b517 E: ID_SERIAL_SHORT=VB10a694bd-6639b517 E: ID_TYPE=disk E: ID_VENDOR=ATA E: ID_VENDOR_ENC=ATA\x20\x20\x20\x20\x20 E: MAJOR=8 E: MINOR=0 E: MPATH_SBIN_PATH=/sbin E: SCSI_IDENT_LUN_ATA=VBOX_HARDDISK_VB10a694bd-6639b517 E: SCSI_IDENT_LUN_T10=ATA_VBOX_HARDDISK_VB10a694bd-6639b517 E: SCSI_IDENT_LUN_VENDOR=VB10a694bd-6639b517 E: SCSI_IDENT_SERIAL=VB10a694bd-6639b517 E: SCSI_MODEL=VBOX_HARDDISK E: SCSI_MODEL_ENC=VBOX\x20HARDDISK\x20\x20\x20 E: SCSI_REVISION=1.0 E: SCSI_TPGS=0 E: SCSI_TYPE=disk E: SCSI_VENDOR=ATA E: SCSI_VENDOR_ENC=ATA\x20\x20\x20\x20\x20 E: SUBSYSTEM=block E: TAGS=:systemd: E: USEC_INITIALIZED=10361
Les options de la commande udevadm sont :
SLES12SP1:~ # 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 hwdb maintain the hardware database index test test an event run test-builtin test a built-in command SLES12SP1:~ # udevadm info --help Usage: udevadm info [OPTIONS] [DEVPATH|FILE] -q,--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 -p,--path=SYSPATH sys device path used for query or attribute walk -n,--name=NAME node or symlink name used for query or attribute walk -r,--root prepend dev directory to path names -a,--attribute-walk print all key matches walking along the chain of parent devices -d,--device-id-of-file=FILE print major:minor of device containing this file -x,--export export key/value pairs -P,--export-prefix export the key name with a prefix -e,--export-db export the content of the udev database -c,--cleanup-db cleanup the udev database --version print version of the program -h,--help print this message
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 :
SLES12SP1:~ # ls -l /sys total 0 drwxr-xr-x 2 root root 0 Oct 24 18:15 block drwxr-xr-x 22 root root 0 Oct 24 18:15 bus drwxr-xr-x 37 root root 0 Oct 24 18:15 class drwxr-xr-x 4 root root 0 Oct 24 18:15 dev drwxr-xr-x 11 root root 0 Oct 24 18:15 devices drwxr-xr-x 4 root root 0 Oct 24 18:15 firmware drwxr-xr-x 5 root root 0 Oct 24 18:15 fs drwxr-xr-x 8 root root 0 Oct 24 18:15 kernel drwxr-xr-x 122 root root 0 Oct 24 18:15 module drwxr-xr-x 2 root root 0 Oct 24 18:15 power
Chaque répertoire contient des informations :
Pour illustrer ceci, saisissez la commande suivante :
SLES12SP1:~ # cat /sys/block/sda/sda1/size 4206592
Ce chiffre correspond aux nombre de secteurs.
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 :
SLES12SP1:~ # 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: # - a 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
Important : La valeur de la limite peut être un nombre ou le mot unlimited.
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 :
SLES12SP1:~ # 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) 13039 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) 13039 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
Les options de ulimit sont :
SLES12SP1:~ # 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.
Les Groupes de Contrôles (Control Groups) aussi appelés CGroups, sont une nouvelle façon sous SLES 12 de contrôler et de limiter des ressources. Les groupes de contrôle permettent l'allocation de ressources, même d'une manière dynamique pendant que le système fonctionne, telles le temps processeur, la mémoire système, la bande réseau, ou une combinaison de ces ressources parmi des groupes de tâches (processus) définis par l'utilisateur et exécutés sur un système.
Les groupes de contrôle sont organisés de manière hiérarchique, comme des processus. Par contre, la comparaison entre les deux démontre que tandis que les processus se trouvent dans une arborescence unique descandant tous du processus init et héritant de l'environnement de leurs parents, les contrôles groupes peuvent être multiples donnant lieu à des arborescences ou hiérarchies multiples qui héritent de certains attributs de leurs groupes de contrôle parents.
Ces hiérarchies multiples et séparés sont necéssaires parce que chaque hiérarchie est attaché à un ou plusieurs sous-système(s) aussi appelés des Contrôleurs de Ressources ou simplement des Contrôleurs. Les contrôleurs disponibles sous SLES 12 sont :
Pour visualiser les hiérarchies, il convient d'utiliser la commande suivante lssubsys. Sous SLES cette commande n'est pas installée par défaut :
SLES12SP1:~ # lssubsys -am If 'lssubsys' is not a typo you can use command-not-found to lookup the package that contains it, like this: cnf lssubsys SLES12SP1:~ # cnf lssubsys The program 'lssubsys' can be found in following packages: * libcgroup-tools [ path: /usr/bin/lssubsys, repository: zypp (SLES12-SP1-12.1-0) ] * libcgroup-tools [ path: /usr/bin/lssubsys, repository: zypp (SUSE_Linux_Enterprise_Server_12_SP1_x86_64:SLES12-SP1-Pool) ] * libcgroup-tools [ path: /usr/bin/lssubsys, repository: zypp (SUSE_Linux_Enterprise_Server_12_SP1_x86_64:SLES12-SP1-Updates) ] Try installing with: zypper install libcgroup-tools SLES12SP1:~ # zypper install libcgroup-tools Refreshing service 'SUSE_Linux_Enterprise_Server_12_SP1_x86_64'. Loading repository data... Reading installed packages... Resolving package dependencies... The following 2 NEW packages are going to be installed: libcgroup-tools libcgroup1 2 new packages to install. Overall download size: 128.8 KiB. Already cached: 0 B. After the operation, additional 351.1 KiB will be used. Continue? [y/n/? shows all options] (y): y Retrieving package libcgroup1-0.41.rc1-9.1.x86_64 (1/2), 43.2 KiB ( 95.6 KiB unpacked) Retrieving: libcgroup1-0.41.rc1-9.1.x86_64.rpm .................................................................................[done] Retrieving package libcgroup-tools-0.41.rc1-9.1.x86_64 (2/2), 85.7 KiB (255.5 KiB unpacked) Retrieving: libcgroup-tools-0.41.rc1-9.1.x86_64.rpm ............................................................................[done] Checking for file conflicts: ...................................................................................................[done] (1/2) Installing: libcgroup1-0.41.rc1-9.1.x86_64 ...............................................................................[done] (2/2) Installing: libcgroup-tools-0.41.rc1-9.1.x86_64 ..........................................................................[done] Additional rpm output: Updating /etc/sysconfig/cgred... cgconfig: WARNING: this version doesn't create /sysdefault cgroup
Exécitez maintenant la commande suivante :
SLES12SP1:~ # lssubsys -am cpuset /sys/fs/cgroup/cpuset cpu,cpuacct /sys/fs/cgroup/cpu,cpuacct memory /sys/fs/cgroup/memory devices /sys/fs/cgroup/devices freezer /sys/fs/cgroup/freezer blkio /sys/fs/cgroup/blkio perf_event /sys/fs/cgroup/perf_event hugetlb /sys/fs/cgroup/hugetlb
Sous SLES 12, Systemd organise les processus dans chaque CGroup. Par exemple tous les processus démarrés par le serveur Apache se trouveront dans le même CGroup, y compris les scripts CGI. Ceci implique que la gestion des ressources en utilisant des hiérarchies est couplé avec l'arborescence des unités de Systemd.
En haut de l'arborescence des unités de Systemd se trouve la tranche root - -.slice, dont dépend :
En dessous des tranches peuvent se trouver :
Les slices peuvent être visualisés avec la commande suivante :
SLES12SP1:~ # systemctl list-units --type=slice UNIT LOAD ACTIVE SUB DESCRIPTION -.slice loaded active active Root Slice system-getty.slice loaded active active system-getty.slice system.slice loaded active active System Slice user-1000.slice loaded active active user-1000.slice user.slice loaded active active User and Session Slice LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 5 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
L'arborescence des unités de Systemd est la suivante :
SLES12SP1:~ # systemd-cgls ├─1 /usr/lib/systemd/systemd --switched-root --system --deserialize 20 ├─user.slice │ └─user-1000.slice │ ├─session-6.scope │ │ ├─3042 sshd: trainee [priv] │ │ ├─3047 sshd: trainee@pts/0 │ │ ├─3048 -bash │ │ ├─3119 su - │ │ ├─3120 -bash │ │ ├─6957 systemd-cgls │ │ └─6958 systemd-cgls │ └─user@1000.service │ ├─3045 /usr/lib/systemd/systemd --user │ └─3046 (sd-pam) └─system.slice ├─sshd.service │ └─2200 /usr/sbin/sshd -D ├─cron.service │ └─1649 /usr/sbin/cron -n ├─postfix.service │ ├─1618 /usr/lib/postfix/master -w │ ├─1626 qmgr -l -t fifo -u │ └─4451 pickup -l -t fifo -u ├─wickedd-nanny.service │ └─876 /usr/sbin/wickedd-nanny --systemd --foreground ├─wickedd.service │ └─875 /usr/sbin/wickedd --systemd --foreground ├─wickedd-auto4.service │ └─873 /usr/lib/wicked/bin/wickedd-auto4 --systemd --foreground ├─wickedd-dhcp4.service │ └─872 /usr/lib/wicked/bin/wickedd-dhcp4 --systemd --foreground ├─wickedd-dhcp6.service │ └─870 /usr/lib/wicked/bin/wickedd-dhcp6 --systemd --foreground ├─systemd-logind.service │ └─760 /usr/lib/systemd/systemd-logind lines 1-35
En utilisant Systemd, plusieurs ressources peuvent être limitées :
Important : Consultez le manuel systemd.resource-control(5) pour voir les paramètres CGroup qui peuvent être passés à systemctl.
Créez un service appelé foo :
SLES12SP1:~ # vi /etc/systemd/system/foo.service SLES12SP1:~ # cat /etc/systemd/system/foo.service [Unit] Description=The foo service that does nothing useful After=remote-fs.target nss-lookup.target [Service] ExecStart=/usr/bin/sha1sum /dev/zero ExecStop=/bin/kill -WINCH ${MAINPID} [Install] WantedBy=multi-user.target
Consultez le statut du service foo :
SLES12SP1:~ # systemctl status foo.service ● foo.service - The foo service that does nothing useful Loaded: loaded (/etc/systemd/system/foo.service; disabled; vendor preset: disabled) Active: inactive (dead)
Démarrez et actives le service :
SLES12SP1:~ # systemctl start foo.service SLES12SP1:~ # systemctl enable foo.service ln -s '/etc/systemd/system/foo.service' '/etc/systemd/system/multi-user.target.wants/foo.service' SLES12SP1:~ # systemctl status foo.service foo.service - The foo service that does nothing useful Loaded: loaded (/etc/systemd/system/foo.service; enabled) Active: active (running) since Thu 2017-10-26 16:09:10 CEST; 51s ago Main PID: 6982 (sha1sum) CGroup: /system.slice/foo.service └─6982 /usr/bin/sha1sum /dev/zero Oct 26 16:09:10 SLES12SP1.fenestros.loc systemd[1]: Started The foo service that does nothing useful.
Notez que notre service a été placé dans la tranche system.slice :
SLES12SP1:~ # systemctl show -p Slice foo.service Slice=system.slice
Utilisez ps pour voir le pourcentage du CPU utilisé par ce service :
SLES12SP1:~ # ps -p 6982 -o pid,comm,cputime,%cpu PID COMMAND TIME %CPU 6982 sha1sum 00:02:38 99.3
Fixez maintenant la valeur de CPUShares pour ce service à 250 :
SLES12SP1:~ # systemctl set-property foo.service CPUShares=250
Cette limite est permenante et a été inscrite dans le fichier 50-CPUShares.conf qui se trouve dans le répertoire /etc/systemd/system/foo.service.d :
SLES12SP1:~ # ls /etc/systemd/system/foo.service.d 90-CPUShares.conf SLES12SP1:~ # cat /etc/systemd/system/foo.service.d/90-CPUShares.conf [Service] CPUShares=250
Important : En utilisant l'option –runtime avec la commande sysetmctl set-property il est possible d'appliquer la limite d'une manière provisoire.
Appliquez cette modification en rechargeant systemd et en re-démarrant le service foo.service :
SLES12SP1:~ # systemctl daemon-reload SLES12SP1:~ # systemctl restart foo.service
Vérifiez maintenant que la limite a été appliquée :
SLES12SP1:~ # cat /sys/fs/cgroup/cpu/system.slice/foo.service/cpu.shares 250 SLES12SP1:~ # systemctl show -p MainPID foo.service MainPID=7184 SLES12SP1:~ # cat /proc/7184/cgroup | grep foo 4:cpuacct,cpu:/system.slice/foo.service 2:name=systemd:/system.slice/foo.service
Créez maintenant le service bar :
SLES12SP1:~ # vi /etc/systemd/system/bar.service SLES12SP1:~ # cat /etc/systemd/system/bar.service [Unit] Description=The bar service that does nothing useful After=remote-fs.target nss-lookup.target [Service] ExecStart=/usr/bin/md5sum /dev/zero ExecStop=/bin/kill -WINCH ${MAINPID} [Install] WantedBy=multi-user.target
Fixez maintenant la limite de CPUShares pour ce service à 2000 :
SLES12SP1:~ # systemctl set-property bar.service CPUShares=2000 Failed to set unit properties on bar.service: Unit bar.service is not loaded. SLES12SP1:~ # systemctl enable bar.service ln -s '/etc/systemd/system/bar.service' '/etc/systemd/system/multi-user.target.wants/bar.service' SLES12SP1:~ # systemctl set-property bar.service CPUShares=2000 SLES12SP1:~ # systemctl daemon-reload SLES12SP1:~ # systemctl start bar.service SLES12SP1:~ # systemctl status bar.service bar.service - The bar service that does nothing useful Loaded: loaded (/etc/systemd/system/bar.service; enabled) Drop-In: /etc/systemd/system/bar.service.d └─90-CPUShares.conf Active: active (running) since Thu 2017-10-26 16:27:11 CEST; 2min 41s ago Main PID: 7246 (md5sum) CGroup: /system.slice/bar.service └─7246 /usr/bin/md5sum /dev/zero Oct 26 16:27:11 SLES12SP1.fenestros.loc systemd[1]: Starting The bar service that does nothing useful... Oct 26 16:27:11 SLES12SP1.fenestros.loc systemd[1]: Started The bar service that does nothing useful. Oct 26 16:27:56 SLES12SP1.fenestros.loc systemd[1]: Started The bar service that does nothing useful.
Re-démarrez les services foo et bar :
SLES12SP1:~ # systemctl restart foo.service SLES12SP1:~ # systemctl restart bar.service SLES12SP1:~ # systemctl status foo.service foo.service - The foo service that does nothing useful Loaded: loaded (/etc/systemd/system/foo.service; enabled) Drop-In: /etc/systemd/system/foo.service.d └─90-CPUShares.conf Active: active (running) since Thu 2017-10-26 16:35:05 CEST; 26s ago Process: 7381 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS) Main PID: 7384 (sha1sum) CGroup: /system.slice/foo.service └─7384 /usr/bin/sha1sum /dev/zero Oct 26 16:35:05 SLES12SP1.fenestros.loc systemd[1]: Starting The foo service that does nothing useful... Oct 26 16:35:05 SLES12SP1.fenestros.loc systemd[1]: Started The foo service that does nothing useful. SLES12SP1:~ # systemctl status bar.service bar.service - The bar service that does nothing useful Loaded: loaded (/etc/systemd/system/bar.service; enabled) Drop-In: /etc/systemd/system/bar.service.d └─90-CPUShares.conf Active: active (running) since Thu 2017-10-26 16:35:11 CEST; 28s ago Process: 7387 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS) Main PID: 7390 (md5sum) CGroup: /system.slice/bar.service └─7390 /usr/bin/md5sum /dev/zero Oct 26 16:35:11 SLES12SP1.fenestros.loc systemd[1]: Starting The bar service that does nothing useful... Oct 26 16:35:11 SLES12SP1.fenestros.loc systemd[1]: Started The bar service that does nothing useful.
Utilisez ps pour voir le pourcentage du CPU utilisé par les deux services :
SLES12SP1:~ # ps -p 7384,7390 -o pid,comm,cputime,%cpu PID COMMAND TIME %CPU 7384 sha1sum 00:00:41 11.0 7390 md5sum 00:05:26 88.6
<html>
Copyright © 2004-2017 I2TCH LIMITED.
</html>