Administrateur Linux - Gestion des processus
Voici les commandes courantes utilisées avec Process Management – bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice.
Travailler avec des processus
Quick Note: Process PID in Linux
Sous Linux, chaque processus en cours reçoit un PID ou un numéro d'identification de processus. Ce PID est la façon dont CentOS identifie un processus particulier. Comme nous l'avons vu, systemd est le premier processus lancé et doté d'un PID de 1 dans CentOS.
Pgrep est utilisé pour obtenir le PID Linux pour un nom de processus donné.
[root@CentOS]# pgrep systemd
1
[root@CentOS]#
Comme vu, la commande pgrep renvoie le PID actuel de systemd.
Processus CentOS de base et gestion des travaux dans CentOS
Lorsque vous travaillez avec des processus sous Linux, il est important de savoir comment les processus de base de premier plan et d'arrière-plan sont exécutés sur la ligne de commande.
fg - Mettre le processus au premier plan
bg - Déplacer le processus vers l'arrière-plan
jobs - Liste des processus actuels attachés au shell
ctrl+z - Combinaison de touches Ctrl + z pour mettre en veille le processus en cours
& - Démarre le processus en arrière-plan
Commençons par utiliser la commande shell sleep .sleepfera simplement comme il est nommé, dormir pendant une période de temps définie: dormir .
[root@CentOS ~]$ jobs
[root@CentOS ~]$ sleep 10 &
[1] 12454
[root@CentOS ~]$ sleep 20 &
[2] 12479
[root@CentOS ~]$ jobs
[1]- Running sleep 10 &
[2]+ Running sleep 20 &
[cnetos@CentOS ~]$
Maintenant, mettons le premier travail au premier plan -
[root@CentOS ~]$ fg 1
sleep 10
Si vous suivez, vous remarquerez que le travail de premier plan est coincé dans votre shell. Maintenant, mettons le processus en veille, puis réactivons-le en arrière-plan.
- Contrôle des coups + z
- Tapez: bg 1, en envoyant le premier travail en arrière-plan et en le démarrant.
[root@CentOS ~]$ fg 1
sleep 20
^Z
[1]+ Stopped sleep 20
[root@CentOS ~]$ bg 1
[1]+ sleep 20 &
[root@CentOS ~]$
nohup
Lorsque vous travaillez à partir d'un shell ou d'un terminal, il convient de noter que par défaut, tous les processus et travaux attachés au shell se termineront lorsque le shell est fermé ou que l'utilisateur se déconnecte. Lors de l'utilisation de nohup, le processus continuera à s'exécuter si l'utilisateur se déconnecte ou ferme le shell auquel le processus est attaché.
[root@CentOS]# nohup ping www.google.com &
[1] 27299
nohup: ignoring input and appending output to ‘nohup.out’
[root@CentOS]# pgrep ping
27299
[root@CentOS]# kill -KILL `pgrep ping`
[1]+ Killed nohup ping www.google.com
[root@CentOS rdc]# cat nohup.out
PING www.google.com (216.58.193.68) 56(84) bytes of data.
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128
time = 51.6 ms
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128
time = 54.2 ms
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128
time = 52.7 ms
Commande ps
le psLa commande est couramment utilisée par les administrateurs pour rechercher des instantanés d'un processus spécifique. ps est couramment utilisé avec grep pour filtrer un processus spécifique à analyser.
[root@CentOS ~]$ ps axw | grep python
762 ? Ssl 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork -nopid
1296 ? Ssl 0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P
15550 pts/0 S+ 0:00 grep --color=auto python
Dans la commande ci-dessus, nous voyons tous les processus utilisant l' interpréteur python . Notre commande grep, qui recherchait la chaîne python, était également incluse dans les résultats .
Voici les commutateurs de ligne de commande les plus courants utilisés avec ps .
Commutateur | action |
---|---|
une | Exclut les contraintes des processus de reporting uniquement pour l'utilisateur actuel |
X | Affiche les processus non attachés à un tty ou un shell |
w | Formate un affichage de sortie large de la sortie |
e | Affiche l'environnement après la commande |
-e | Sélectionne tous les processus |
-o | Sortie formatée définie par l'utilisateur |
-u | Affiche tous les processus par un utilisateur spécifique |
-C | Affiche tous les processus par nom ou ID de processus |
--Trier | Trie les processus par définition |
Pour voir tous les processus utilisés par l' utilisateur nobody -
[root@CentOS ~]$ ps -u nobody
PID TTY TIME CMD
1853 ? 00:00:00 dnsmasq
[root@CentOS ~]$
Pour voir toutes les informations sur le processus firewalld -
[root@CentOS ~]$ ps -wl -C firewalld
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 0 762 1 0 80 0 - 81786 poll_s ? 00:00:01 firewalld
[root@CentOS ~]$
Voyons quels processus consomment le plus de mémoire -
[root@CentOS ~]$ ps aux --sort=-pmem | head -10
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
cnetos 6130 0.7 5.7 1344512 108364 ? Sl 02:16 0:29 /usr/bin/gnome-shell
cnetos 6449 0.0 3.4 1375872 64440 ? Sl 02:16 0:00 /usr/libexec/evolution-calendar-factory
root 5404 0.6 2.1 190256 39920 tty1 Ssl+ 02:15 0:27 /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1
cnetos 6296 0.0 1.7 1081944 32136 ? Sl 02:16 0:00 /usr/libexec/evolution/3.12/evolution-alarm-notify
cnetos 6350 0.0 1.5 560728 29844 ? Sl 02:16 0:01 /usr/bin/prlsga
cnetos 6158 0.0 1.4 1026956 28004 ? Sl 02:16 0:00 /usr/libexec/gnome-shell-calendar-server
cnetos 6169 0.0 1.4 1120028 27576 ? Sl 02:16 0:00 /usr/libexec/evolution-source-registry
root 762 0.0 1.4 327144 26724 ? Ssl 02:09 0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
cnetos 6026 0.0 1.4 1090832 26376 ? Sl 02:16 0:00 /usr/libexec/gnome-settings-daemon
[root@CentOS ~]$
Voir tous les processus par centos utilisateur et format, en affichant la sortie personnalisée -
[cnetos@CentOS ~]$ ps -u cnetos -o pid,uname,comm
PID USER COMMAND
5802 centos gnome-keyring-d
5812 cnetos gnome-session
5819 cnetos dbus-launch
5820 cnetos dbus-daemon
5888 cnetos gvfsd
5893 cnetos gvfsd-fuse
5980 cnetos ssh-agent
5996 cnetos at-spi-bus-laun
Commande pstree
pstreeest similaire à ps mais n'est pas souvent utilisé. Il affiche les processus d'une manière plus ordonnée.
[centos@CentOS ~]$ pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───2*[{at-spi2-registr}]
├─atd
├─auditd─┬─audispd─┬─sedispatch
│ │ └─{audispd}
│ └─{auditd}
├─avahi-daemon───avahi-daemon
├─caribou───2*[{caribou}]
├─cgrulesengd
├─chronyd
├─colord───2*[{colord}]
├─crond
├─cupsd
La sortie totale de pstree peut dépasser 100 lignes. Habituellement, ps donnera des informations plus utiles.
commande top
topest l'une des commandes les plus souvent utilisées pour résoudre les problèmes de performances sous Linux. Il est utile pour les statistiques en temps réel et la surveillance des processus sous Linux. Ce qui suit est la sortie par défaut de top lorsqu'il est sorti de la ligne de commande.
Tasks: 170 total, 1 running, 169 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2.3 us, 2.0 sy, 0.0 ni, 95.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1879668 total, 177020 free, 607544 used, 1095104 buff/cache
KiB Swap: 3145724 total, 3145428 free, 296 used. 1034648 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5404 root 20 0 197832 48024 6744 S 1.3 2.6 1:13.22 Xorg
8013 centos 20 0 555316 23104 13140 S 1.0 1.2 0:14.89 gnome-terminal-
6339 centos 20 0 332336 6016 3248 S 0.3 0.3 0:23.71 prlcc
6351 centos 20 0 21044 1532 1292 S 0.3 0.1 0:02.66 prlshprof
Touches de raccourci courantes utilisées lors de l'exécution de top ( les touches de raccourci sont accessibles en appuyant sur la touche car top est en cours d'exécution dans votre shell).
Commander | action |
---|---|
b | Active / désactive la mise en évidence en gras dans le menu supérieur |
z | Cycle le jeu de couleurs |
l | Fait cycle le cap moyen de charge |
m | Fait défiler le cap moyen de la mémoire |
t | En-tête d'informations sur la tâche |
h | Menu d'aide |
Maj + F | Personnalise le tri et l'affichage des champs |
Voici les commutateurs de ligne de commande courants pour top .
Commander | action |
---|---|
-o | Trie par colonne (peut être précédée de - ou + pour trier par ordre croissant ou décroissant) |
-u | Affiche uniquement les processus d'un utilisateur spécifié |
-ré | Met à jour le temps de retard de top |
-O | Renvoie une liste de colonnes dont le haut peut appliquer le tri |
Options de tri écran en haut, présenté en utilisant Maj + F . Cet écran permet de personnaliser l' affichage supérieur et les options de tri.
Fields Management for window 1:Def, whose current sort field is %MEM
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
'd' or <Space> toggles display, 's' sets sort. Use 'q' or <Esc> to end!
* PID = Process Id TGID = Thread Group Id
* USER = Effective User Name ENVIRON = Environment vars
* PR = Priority vMj = Major Faults delta
* NI = Nice Value vMn = Minor Faults delta
* VIRT = Virtual Image (KiB) USED = Res+Swap Size (KiB)
* RES = Resident Size (KiB) nsIPC = IPC namespace Inode
* SHR = Shared Memory (KiB) nsMNT = MNT namespace Inode
* S = Process Status nsNET = NET namespace Inode
* %CPU = CPU Usage nsPID = PID namespace Inode
* %MEM = Memory Usage (RES) nsUSER = USER namespace Inode
* TIME+ = CPU Time, hundredths nsUTS = UTS namespace Inode
* COMMAND = Command Name/Line
PPID = Parent Process pid
UID = Effective User Id
haut , montrant les processus pour l'utilisateur rdc et triés par utilisation de la mémoire -
PID USER %MEM PR NI VIRT RES SHR S %CPU TIME+ COMMAND
6130 rdc 6.2 20 0 1349592 117160 33232 S 0.0 1:09.34 gnome-shell
6449 rdc 3.4 20 0 1375872 64428 21400 S 0.0 0:00.43 evolution-calen
6296 rdc 1.7 20 0 1081944 32140 22596 S 0.0 0:00.40 evolution-alarm
6350 rdc 1.6 20 0 560728 29844 4256 S 0.0 0:10.16 prlsga
6281 rdc 1.5 20 0 1027176 28808 17680 S 0.0 0:00.78 nautilus
6158 rdc 1.5 20 0 1026956 28004 19072 S 0.0 0:00.20 gnome-shell-cal
Affichage des principaux champs valides (condensés) -
[centos@CentOS ~]$ top -O
PID
PPID
UID
USER
RUID
RUSER
SUID
SUSER
GID
GROUP
PGRP
TTY
TPGID
Commande kill
le killLa commande est utilisée pour tuer un processus du shell de commande via son PID. Lors de tuer un processus, nous avons besoin de spécifier un signal à envoyer. Le signal permet au noyau de savoir comment nous voulons terminer le processus. Les signaux les plus couramment utilisés sont -
SIGTERMest implicite car le noyau fait savoir à un processus qu'il doit s'arrêter dès qu'il est sécuritaire de le faire. SIGTERM donne au processus l'opportunité de se terminer gracieusement et d'effectuer des opérations de sortie sûres.
SIGHUPla plupart des démons redémarreront lorsqu'ils seront envoyés à SIGHUP . Ceci est souvent utilisé sur les processus lorsque des modifications ont été apportées à un fichier de configuration.
SIGKILLpuisque SIGTERM équivaut à demander à un processus de s'arrêter. Le noyau a besoin d'une option pour terminer un processus qui ne se conformera pas aux demandes. Lorsqu'un processus est suspendu, l' option SIGKILL est utilisée pour arrêter le processus explicitement.
Pour une liste de tous les signaux qui peuvent être envoyés avec kill, l' option -l peut être utilisée -
[root@CentOS]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
[root@CentOS rdc]#
Utilisation de SIGHUP pour redémarrer le système.
[root@CentOS]# pgrep systemd
1
464
500
643
15071
[root@CentOS]# kill -HUP 1
[root@CentOS]# pgrep systemd
1
464
500
643
15196
15197
15198
[root@CentOS]#
pkillpermettra à l'administrateur d'envoyer un kill signal par le nom du processus.
[root@CentOS]# pgrep ping
19450
[root@CentOS]# pkill -9 ping
[root@CentOS]# pgrep ping
[root@CentOS]#
killallva tuer tous les processus. Soyez prudent en utilisant killall en tant que root, car cela tuera tous les processus pour tous les utilisateurs.
[root@CentOS]# killall chrome
Commande gratuite
freeest une commande assez simple souvent utilisée pour vérifier rapidement la mémoire d'un système. Il affiche la quantité totale de mémoire physique et d'échange utilisée.
[root@CentOS]# free
total used free shared buff/cache available
Mem: 1879668 526284 699796 10304 653588 1141412
Swap: 3145724 0 3145724
[root@CentOS]#
belle commande
nicepermettra à un administrateur de définir la priorité de planification d'un processus en termes d'utilisation du processeur. La gentillesse est essentiellement la façon dont le noyau planifiera les tranches de temps CPU pour un processus ou une tâche. Par défaut, on suppose que le processus a un accès égal aux ressources du processeur.
Tout d'abord, utilisons top pour vérifier la gentillesse des processus en cours d'exécution.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28 root 39 19 0 0 0 S 0.0 0.0 0:00.17 khugepaged
690 root 39 19 16808 1396 1164 S 0.0 0.1 0:00.01 alsactl]
9598 rdc 39 19 980596 21904 10284 S 0.0 1.2 0:00.27 tracker-extract
9599 rdc 39 19 469876 9608 6980 S 0.0 0.5 0:00.04 tracker-miner-a
9609 rdc 39 19 636528 13172 8044 S 0.0 0.7 0:00.12 tracker-miner-f
9611 rdc 39 19 469620 8984 6496 S 0.0 0.5 0:00.02 tracker-miner-u
27 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
637 rtkit 21 1 164648 1276 1068 S 0.0 0.1 0:00.11 rtkit-daemon
1 root 20 0 128096 6712 3964 S 0.3 0.4 0:03.57 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.50 ksoftirqd/0
7 root 20 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:02.07 rcu_sched
Nous voulons nous concentrer sur la colonne NICE représentée par NI . La plage de gentillesse peut être comprise entre -20 et 19 positifs. -20 représente la priorité donnée la plus élevée.
nohup nice --20 ping www.google.com &
renice
renice nous permet de modifier la priorité actuelle d'un processus déjà en cours d'exécution.
renice 17 -p 30727
La commande ci-dessus réduira la priorité de notre commande de processus ping .