1. Mode débogage
Si une application ne répond pas,
elle peut attendre par exemple une connexion réseau. Vous
pouvez rattacher la commande strace à ce
processus.
Syntaxestrace <programme>
Option nécessaire :
Option courte
|
Description
|
-p <pid>
|
Trace le processus mentionné par
son PID.
|
Pour tracer le processus de Apache 2, il faut connaître son PID :
# pidof apache2 2533 2532 2530 2527Apache retourne plusieurs PID. Prenez la dernière valeur :
# strace -p 2527 Process 2527 attached - interrupt to quit select(0, NULL, NULL, NULL, {0, 913609}) = 0 (Timeout) wait4(-1, 0x7fff798e74cc, WNOHANG|WSTOPPED, NULL) = 0 select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout) wait4(-1, 0x7fff798e74cc, WNOHANG|WSTOPPED, NULL) = 0 select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout) wait4(-1, 0x7fff798e74cc, WNOHANG|WSTOPPED, NULL) = 0 select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout) wait4(-1, 0x7fff798e74cc, WNOHANG|WSTOPPED, NULL) = 0 select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout) ...Faites [CTRL]+C pour interrompre.
2. Terminer un processus
Vous pouvez demander au système d’exploitation
de terminer un processus ayant un comportement anormal ou qui est
planté en invoquant son identifiant de processus (PID)
ou bien son nom.
a. Rechercher un PID
Vous pouvez rechercher le PID d’une application
qui ne répond plus avec les commandes suivantes :
-
pidof
-
pgrep
-
ps
Cette commande affiche le ou les PID du programme
invoqué.
Syntaxepidof <option> <nom_du_programme
Option utile :
Option courte
|
Description
|
-s
|
Renvoie un seul PID.
|
Connaître les PID du programme ssh :
# pidof sshd 3610 3605 3423pgrep
La commande pgrep affiche
les identifiants des processus.
Syntaxepgrep <options> <nom_du_programme>
Options nécessaires :
Option
|
Description
|
|
courte
|
longue
|
|
-l
|
--list-name
|
Affiche le processus avec son PID.
|
-u <utilisateur>
|
--euid <utilisateur>
|
Affiche les processus de l’UID mentionné.
|
Connaître le PID du programme sshd :
# pgrep -l sshd 3423 sshd 3605 sshd 3610 sshdConnaître le PID des programmes dont le propriétaire est root :
# pgrep -lu root 1 init 2 kthreadd 3 ksoftirqd/0 5 kworker/u:0 6 migration/0 7 watchdog/0 8 migration/1 10 ksoftirqd/1 12 watchdog/1 13 cpuset 14 khelper 15 kdevtmpfs ...ps
ps permet
d’afficher l’état des processus en cours.
Syntaxeps <options>
Options nécessaires :
Option courte
|
Description
|
-a
|
Affiche tous les processus.
|
-u
|
Affiche le nom de l’utilisateur et l’heure
de lancement.
|
-x
|
Affiche également les processus
qui n’ont pas de terminal de contrôle.
|
Connaître uniquement le PID du programme sshd :
# ps aux |grep sshd root 3423 0.0 0.2 49848 1200 ? Ss 11:10 0:00 /usr/sbin/sshd root 3605 0.0 0.7 92112 3960 ? Ss 11:10 0:00 sshd: bob [priv] bob 3610 0.0 0.3 92112 1904 ? S 11:10 0:00 sshd: bob@pts/0 root 3847 0.0 0.1 7848 884 pts/0 S+ 11:22 0:00 grep sshdVous pouvez ajouter grep -v grep pour exclure le processus grep sshd :
# ps aux |grep sshd |grep -v grep root 3423 0.0 0.2 49848 1200 ? Ss 11:10 0:00 /usr/sbin/sshd root 3605 0.0 0.7 92112 3960 ? Ss 11:10 0:00 sshd: bob [priv] bob 3610 0.0 0.3 92112 1904 ? S 11:10 0:00 sshd: bob@pts/0
b. Outils pour terminer un processus
Si un programme ne répond plus du
tout, il est donc nécessaire d’envoyer un signal au système
d’exploitation pour demander de terminer son exécution. Pour
effectuer cette opération, vous disposez de plusieurs commandes :
-
kill
-
pkill
-
killall
-
xkill
kill permet
d’envoyer différents types de signaux.
Syntaxekill <signal> <pid>
Les signaux utiles :
Signal
|
Description
|
-2 (SIGINT)
|
Interrompt le processus. [Ctrl]+C
utilise ce signal.
|
-15 (SIGTERM)
|
Termine le processus.
|
-9 (SIGKILL)
|
Contrairement à SIGINT et SIGTERM,
le signal ne pourra pas être ignoré par le processus.
|
Pour connaître la liste de tous les
signaux disponibles :
# 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) SIGRTMAXExemple
Pour terminer le programme Apache 2 proprement, vous devez utiliser le signal SIGTERM :
# kill -15 $(pidof apache2)Si la demande SIGTERM n’aboutit pas, il est nécessaire d’envoyer le signal SIGKILL :
# kill -9 $(pidof apache2)pkill
pkill envoie également
un signal à un processus.
Syntaxepkill <options> <nom_du_programme>
Options utiles :
Option
|
Description
|
|
courte
|
longue
|
|
-l
|
--list-name
|
Affiche le processus avec son PID.
|
-u <utilisateur>
|
--euid <utilisateur>
|
Affiche les processus de l’UID mentionné.
|
-P
|
--parent
|
Sélectionne les processus du
parent PID (PPID).
|
Listez les processus d’Apache 2 pour constater s’il est en cours d’exécution :
# pidof apache2 4687 4686 4684 4681Terminer les processus associés à Apache 2 :
# pkill apache2Vous n’avez pas à connaître le PID du processus contrairement à la commande kill.
Vérifiez le résultat :
# pidof apache2killall
killall termine un processus en invoquant
son nom. Par défaut, il envoie le signal SIGTERM
(-15).
Syntaxekillall <options> <processus>
Options utiles :
Option
|
Description
|
|
courte
|
longue
|
|
-l
|
--list
|
Liste les signaux disponibles.
|
-s
|
--signal
|
Envoie un signal spécifique
|
-u
|
--user
|
Termine les processus de l’utilisateur
mentionné.
|
Listez les processus d’Apache 2 pour savoir s’il est en cours d’exécution :
# pidof apache2 4687 4686 4684 4681Terminez avec le signal SIGKILL (-9) les processus associés à Apache 2 :
# killall -s 9 apache2Vous n’avez pas à connaître le PID du processus contrairement à la commande kill.
Vérifiez le résultat :
# pidof apache2xkill
Cet outil est utile lorsque vous avez un environnement
graphique. Xkill demande au
serveur X de clore la connexion avec le client X. Il permet de terminer
un processus généralement planté qui
est exécuté dans une fenêtre à l’écran
sur le bureau.
Syntaxexkill
Pas d’options pour cette commande.
ExempleVous avez une application telle que LibreOffice sur le bureau. Pour utiliser xkill, ouvrez un terminal sans être obligatoirement root. Et, vous tapez xkill :
Aucun commentaire :
Enregistrer un commentaire