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.
nmap : les 12 commandes que vous devez connaître
Netstat : Les 14 commandes les plus utilisées
nmtui : Configurer une adresse IP sous Linux
Protocole du routage
Fail2Ban : How to protect Linux services