kill
kill

Kill – Arrêter les processus sous linux

Kill est une commande sous linux qui permet d’arrêter les process manuellement en envoyant différents types de signaux. Nous allons voir dans ce guide comment arrêter les process avec kill et quelles sont ces types des  signaux.

1 – Afficher les différents types de signaux :

kill peut envoyer différents types de signaux aux processus, vous pouvez les afficher avec la commande ci-dessous :

[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

Comme vous pouvez le voir chaque signal a un numéro spécifique. parmi les  signaux les plus utilisés sont :  SIGHUP (1)SIGTERM (15), SIGKILL(9), SIGSTOP(19) et SIGCONT(18)  :

-SIGHUP : Permet de recharger la configuration d’un processus
-SIGTERM : Permet d’arrêter gentiment  un processus
-SIGKILL : Permet de tuer un processus, on s’en sert en cas de plantage de ce dernier.
-SIGSTOP : Suspendre un processus
-SIGCONT : reprendre un processus suspendu.

2 – Envoyer un signal à un processus :

Vous pouvez envoyer un signal avec différentes façons , soit avec le nom du signal, soit avec le numéro qui lui correspond suivi de l’identifiant du processus (PID) :

[root@srv ~]#kill -SIGHUP PID_NUMBER
ou
[root@srv ~]#kill -s SIGHUP PID_NUMBER
[root@srv ~]#kill -1 PID_NUMBER
[root@srv ~]#kill -HUP PID_NUMBER
ou
[root@srv ~]#kill -s HUP PID_NUMBER

Vous pouvez récupérée le PID avec différentes commandes : pidof, pgrep, ps, ou top :

[root@srv ~]# pidof mysqld
15694
[root@http1 ~]# ps -ef
root      15269      2  0 juin07 ?       00:00:00 [kworker/u256:1]
root      15449      2  0 00:25 ?        00:00:00 [kworker/u257:0]
root      15451      2  0 00:25 ?        00:00:00 [hci0]
root      15452      2  0 00:25 ?        00:00:00 [hci0]
root      15456      2  0 00:25 ?        00:00:00 [kworker/u257:2]
root      15487   7024  0 00:36 ?        00:00:00 sshd: root@pts/0
root      15491   7024  0 00:37 ?        00:00:00 sshd: root@notty
root      15493  15487  0 00:37 pts/0    00:00:00 -bash
root      15517  15491  0 00:37 ?        00:00:00 /usr/libexec/openssh/sftp-server
root      15583      2  0 01:09 ?        00:00:00 [kworker/0:0]
root      15603      2  0 01:12 ?        00:00:01 [kworker/0:3]
postfix   15604   9052  0 01:16 ?        00:00:00 pickup -l -t unix -u
root      15605      2  0 01:17 ?        00:00:00 [kworker/0:1]
mysql     15694      1 24 01:53 ?        00:00:18 /usr/sbin/mysqld
root      15743  15493  0 01:54 pts/0    00:00:00 ps -ef
root      15744  15493  0 01:54 pts/0    00:00:00 -bash
[root@srv ~]# top
top - 01:56:36 up 1 day, 11:10, 3 users, load average: 0,03, 0,07, 0,06
Tasks: 104 total, 1 running, 103 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0,0 us, 0,3 sy, 0,0 ni, 99,7 id, 0,0 wa, 0,0 hi, 0,0 si, 0,0 st
KiB Mem : 963128 total, 85436 free, 464152 used, 413540 buff/cache
KiB Swap: 1679356 total, 1674932 free, 4424 used. 281068 avail Mem
 PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
 15694 mysql     20   0 1313984 331860  14688 S  0,3 34,5   0:22.71 mysqld
 15745 root      20   0  162012   2244   1560 R  0,3  0,2   0:01.07 top
     1 root      20   0  128156   5784   3332 S  0,0  0,6   0:19.45 systemd
     2 root      20   0       0      0      0 S  0,0  0,0   0:00.03 kthreadd
     3 root      20   0       0      0      0 S  0,0  0,0   0:12.33 ksoftirqd/0
     5 root       0 -20       0      0      0 S  0,0  0,0   0:00.00 kworker/0:0H
     7 root      rt   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:03.78 rcu_sched

3 – Arrêter les processus en background :

Vous pouvez aussi arrêter les process lancé en arrière plan avec la commande kill :

[root@srv ~]# jobs
[1]- En cours d'exécution sleep 100 &
[2]+ En cours d'exécution sleep 200 &

[root@srv ~]#kill -SIGTERM %1
[root@srv ~]#kill -SIGSTOP %2

[root@srv ~]# kill -SIGTERM %1
[root@srv ~]# kill -SIGTERM %2
[1]- Complété sleep 1000

[root@srv~]# jobs
[2]+ Complété sleep 2000