pkill
pkill

pkill : Comment arrêter les process avec leurs nom

pkill est une commande sous linux qui permet d’arrêter un process en cours d’exécution. Contrairement à la commande kill, pkill n’a pas besoin de lui indiquer l’ID du process, il suffit de lui donner son nom. Nous allons voir dans ce guide quelques commande de pkill qu’un administrateur système utilise pour gérer les process en cas de problème.

1- Arrêter un process avec son nom :

Là je souhaite arrêter le process mysqld qui est en cours d’exécution en indiquant juste son nom :

[root@srv ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since sam. 2020-06-06 22:35:21 WEST; 15h ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Main PID: 10842 (mysqld)
Status: "Server is operational"
CGroup: /system.slice/mysqld.service
└─10842 /usr/sbin/mysqld
[root@srv ~]# pkill mysqld
[root@srv ~]# systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: deactivating (stop-sigterm) since dim. 2020-06-07 14:13:02 WEST; 3s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Main PID: 10842 (mysqld)
Status: "Server shutdown in progress"
CGroup: /system.slice/mysqld.service
└─10842 /usr/sbin/mysqld

Comme pouvez le constater, le service mysql s’est bien arrêté.

2-Arrêter un process avec différents signal :

pkill utilise par défaut le signal SIGTERM pour arrêter un process, vous pouvez changer le type de signale avec l’option -signal :

[root@srv ~]# pkill --signal  SIGKILL mysqld

Taper la commande kill -l pour voir les différents type de signal :

[root@srv ~]# 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

3 – Arrêter un process en indiquant la commande complète :

l’un des points fort de la commande pkill est qu’il peut arrêter un process en indiquant la commande complète au lieu du nom du process, Avec un exemple, ça sera sûrement plus clair :

Je vais prendre comme exemple la commande « ping » qui permet de tester la connectivité vers une machine. Là je vais lancer un ping vers « google.com » et « sysreseau.net » en arrière plan.

[root@srv ~]# ping google.com > output &
[1] 13931
[root@srv ~]# ping sysreseau.net > output &
[2] 13932

Maintenant j’ai deux process de ping en cours d’exécution en arrière plan :

[root@srv ~]# jobs
[1]- En cours d'exécution ping google.com > output &
[2]+ En cours d'exécution ping sysreseau.net > output &

Supposant que je souhaite arrêter le ping vers google.com, si je tape pkill ping, le ping vers sysreseau.net s’arrêtera aussi.

Pour éviter cela on utilise l’option -f pour indiquer au pkill qu’on juste arrêter le ping vers google.com :

[root@srv ~]# pkill -f "ping google.com"
[1]- Complété ping google.com > output

et notre ping vers sysreseau.net est toujours vivant :

[root@srv ~]# jobs
[2]+ En cours d'exécution ping sysreseau.net > output &

Et voilà c’est terminé c’était un tuto rapide pour savoir comment manipuler les process avec la commande pkill. J’espère que cela vous a été utile.