<Précédent | Table des matières | Suivant>
Envoi de signaux aux processus avec kill
La tuer La commande est utilisée pour envoyer des signaux aux programmes. Sa syntaxe la plus courante ressemble à ceci :
tuer [-signal] PID...
tuer [-signal] PID...
Si aucun signal n'est spécifié sur la ligne de commande, alors le TERME (Terminer) le signal est envoyé par défaut. Les tuer La commande est le plus souvent utilisée pour envoyer les signaux suivants :
Tableau 10-4 : Signaux communs
Numéro | Nom | Sens |
1 | HUP | Raccrocher. C'est un vestige du bon vieux temps où les terminaux étaient reliés à des télécommandes |
ordinateurs avec lignes téléphoniques et modems. Le signal est utilisé pour indiquer aux programmes que le terminal de contrôle a « raccroché ». L'effet de ce signal peut être démontré en fermant une session de terminal. Le programme de premier plan exécuté sur le terminal recevra le signal et se terminera. | ||
Ce signal est également utilisé par de nombreux programmes démons pour provoquer une réinitialisation. Cela signifie que lorsqu'un démon reçoit ce signal, il redémarre et relit son fichier de configuration. Le serveur Web Apache est un exemple de démon qui utilise le HUP signaler de cette façon. | ||
2 | INT | Interrompre. Remplit la même fonction que le Ctrl-c clé envoyée depuis le terminal. Il terminera généralement un programme. |
9 | KILL | Tuer. Ce signal est spécial. Alors que les programmes peuvent choisir de traiter les signaux qui leur sont envoyés de différentes manières, y compris en les ignorant tous ensemble, le KILL le signal n'est jamais réellement envoyé au programme cible. Au contraire, le noyau termine immédiatement le processus. Lorsqu'un processus est terminé de cette manière, il n'a aucune possibilité de « nettoyer » après lui-même ou de sauvegarder son travail. Pour cette raison, le KILL ne doit être utilisé qu'en dernier recours lorsque d'autres signaux de terminaison échouent. |
15 | TERME | Mettre fin. C'est le signal par défaut envoyé par le tuer commander. Si un programme est encore suffisamment « vivant » pour recevoir des signaux, il se terminera. |
18 | CONT | Continuer. Cela restaurera un processus après un STOP signal. |
19 | STOP | Arrêter. Ce signal met un processus en pause sans se terminer. Comme le KILL signal, il n'est pas envoyé au processus cible et ne peut donc pas être ignoré. |
Essayons le tuer commander:
[moi@linuxbox ~]$ xlogo &
[1] 13546
[moi@linuxbox ~]$ tuer -1 13546
[1]+ Raccrocher xlogo
[moi@linuxbox ~]$ xlogo &
[1] 13546
[moi@linuxbox ~]$ tuer -1 13546
[1]+ Raccrocher xlogo
Dans cet exemple, nous commençons le logo x programme en arrière-plan, puis envoyez-lui un HUP signaler avec tuerL’ logo x le programme se termine et le shell indique que le processus d'arrière-plan a reçu un signal de raccrochage. Il se peut que nous devions appuyer plusieurs fois sur la touche Entrée avant que le message n'apparaisse. Notez que les signaux peuvent être spécifiés soit par un numéro, soit par un nom, y compris le nom précédé des lettres « SIG » :
[moi@linuxbox ~]$ xlogo &
[1] 13601
[moi@linuxbox ~]$ tuer -INT 13601 [1]+ Interruption xlogo [moi@linuxbox ~]$ xlogo &
[1] 13608
[moi@linuxbox ~]$ tuer -SIGINT 13608
[1]+ Interruption xlogo
[moi@linuxbox ~]$ xlogo &
[1] 13601
[moi@linuxbox ~]$ tuer -INT 13601 [1]+ Interruption xlogo [moi@linuxbox ~]$ xlogo &
[1] 13608
[moi@linuxbox ~]$ tuer -SIGINT 13608
[1]+ Interruption xlogo
Répétez l'exemple ci-dessus et essayez les autres signaux. N'oubliez pas que nous pouvons également utiliser des spécifications de travail à la place des PID.
Les processus, comme les fichiers, ont des propriétaires, et vous devez être le propriétaire d'un processus (ou le super-utilisateur) afin de lui envoyer des signaux avec tuer.
En plus de la liste des signaux ci-dessus, qui sont le plus souvent utilisés avec tuer, il existe d'autres signaux fréquemment utilisés par le système. Voici une liste d'autres signaux courants :
Tableau 10-5 : Autres signaux communs
Numéro | Nom | Sens |
3 | QUITTER | Quittez. |
11 | SEGV | Violation de segmentation. Ce signal est envoyé si un programme utilise illégalement la mémoire, c'est-à-dire s'il a essayé d'écrire quelque part où il n'était pas autorisé. |
20 | TSTP | Arrêt terminal. C'est le signal envoyé par le terminal lorsque le Ctrl-z la touche est enfoncée. Contrairement au STOP signal, le TSTP le signal est reçu par |
le programme, mais le programme peut choisir de l'ignorer.
28 Changement de fenêtre de TREUIL. C'est le signal envoyé par le
système lorsqu'une fenêtre change de taille. Certains programmes, comme top et les moins répondront à ce signal en se redessinant pour s'adapter aux nouvelles dimensions de la fenêtre.
Pour les curieux, une liste complète des signaux peut être consultée avec la commande suivante :
[moi@linuxbox ~]$ kill -l
[moi@linuxbox ~]$ kill -l