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 .