Qu'est-ce qu'un processus
Un processus, également appelé tâche, est la forme d'exécution d'un programme. Les programmes sont stockés sur disque et les processus s'exécutent en mémoire. Les processus ont une relation parent/enfant. Un processus peut engendrer un ou plusieurs enfants. Plusieurs processus peuvent s'exécuter en parallèle.
Répertorier les processus système
La commande process status (ps) répertorie les processus associés à votre shell.
# ps [options]
Pour chaque processus, la commande ps affiche le PID , l'identifiant du terminal (TTY ), le temps d'exécution cumulé (TIME ) et le nom de la commande (CMD ). Par exemple, répertoriez les processus en cours d'exécution sur le système à l'aide de la commande ps.
# ps PID TTY TIME CMD 1442 pts/1 00:00:00 sudo 1448 pts/1 00:00:00 su 1449 pts/1 00:00:00 bash 1666 pts/1 00:00:00 ps
La commande ps comporte plusieurs options que vous pouvez utiliser pour afficher des informations supplémentaires sur le processus.
- -a :Imprime des informations sur tous les processus les plus fréquemment demandés, à l'exception des chefs de groupe de processus et des processus non associés à un terminal
- -e :Imprime des informations sur chaque processus en cours d'exécution
- -f :Génère une liste complète
- -l :Génère une longue liste
- Format -o :Écrit des informations selon la spécification de format donnée dans un format. Plusieurs options -o peuvent être spécifiées. La spécification de format est interprétée comme la concaténation séparée par des espaces de tous les arguments d'option de format.
Liste de tous les processus
Par exemple, utilisez le 'ps -ef ' pour répertorier tous les processus actuellement programmés pour s'exécuter sur le système.
# ps -ef | more
Ici,
- UID :Le nom d'utilisateur du propriétaire du processus
- PID :Le numéro d'identification unique du processus
- PPID :Le numéro d'identification du processus parent du processus
- STIME :L'heure à laquelle le processus a commencé (hh:mm:ss)
- ATS :Le terminal de contrôle du processus. Notez que les processus système (démons) affichent un point d'interrogation (?), indiquant que le processus a démarré sans l'utilisation d'un terminal.
- HEURE :Le temps d'exécution cumulé du processus
- CMD :Le nom de la commande, les options et les arguments
Terminer un processus
Il peut arriver que vous deviez mettre fin à un processus indésirable. Un processus peut être entré dans une boucle sans fin ou s'être bloqué. Vous pouvez tuer ou arrêter n'importe quel processus que vous possédez. Vous pouvez utiliser les deux commandes suivantes pour terminer un ou plusieurs processus :
– kill
– pkill
Les commandes kill et pkill envoient des signaux aux processus leur ordonnant de se terminer. Chaque signal a un numéro, un nom et un événement associé. Vous trouverez ci-dessous certains des signaux les plus couramment utilisés avec leurs fonctionnalités.
Nombre | Nom | Description |
---|---|---|
1 | SIGHUP | Recharger le fichier de configuration |
2 | SIGINT | Interruption par le clavier (ctrl+c) |
9 | SIGKILL | tuer le processus |
15 | SIGTERM | Terminer le processus immédiatement. (Terminer un processus de manière contrôlée afin que le nettoyage soit possible) |
18 | SIGCON | Continuer le processus arrêté avec STOP |
19 | ARRÊTER | Arrêter le processus |
Terminer un processus à l'aide de la commande kill
Vous pouvez terminer n'importe quel processus en envoyant le signal approprié au processus concerné. La commande kill envoie le signal 15, le signal de terminaison, par défaut. Ce signal amène le processus à se terminer de manière ordonnée. La commande kill envoie un signal de terminaison à un ou plusieurs processus. La syntaxe pour utiliser la commande kill est la suivante :
# kill [-signal] PIDsRemarque :La commande kill ne termine que les processus que vous possédez. L'utilisateur root peut utiliser la commande kill sur n'importe quel processus.
Vous devez connaître le PID du processus avant de pouvoir le terminer. Vous pouvez utiliser la commande ps ou pgrep pour localiser le PID du processus. De plus, vous pouvez mettre fin à plusieurs processus en même temps en saisissant plusieurs PID sur une seule ligne de commande. Voyons un exemple de commande kill. Nous tuerions le processus "sommeil 400" comme indiqué ci-dessous.
# ps -ef | grep sleep root 1337 1218 0 07:33 pts/0 00:00:00 sleep 400
# kill -9 1337
# ps -ef | grep sleep #
Terminer un processus à l'aide de la commande pkill ou killall
Vous pouvez également utiliser la commande pkill ou killall pour envoyer un signal de terminaison aux processus.
# pkill [-options] PIDs
ou
# killall [-options] PIDs
La commande pkill/killall vous demande de spécifier le nom au lieu du PID du processus. Par exemple, utilisez la commande pkill pour terminer le processus dtmail.
# pkill dtmail # pgrep -l mail #
Arrêt forcé d'un processus :signal 9
Certains processus ignorent le signal par défaut 15 envoyé par la commande kill. Si un processus ne répond pas au signal 15, vous pouvez le forcer à se terminer en utilisant le signal 9 avec la commande kill ou pkill.
# kill -9 PID
ou
# pkill -9 process_nameRemarque :L'envoi du signal 15 ne tue pas nécessairement un processus gracieusement. Seulement si le signal est capté par le processus, il se nettoie dans l'ordre et meurt. Sinon, il meurt tout simplement.