Je tue habituellement un processus avec killall
.
killall markdoc
Mais je ne sais pas si cette commande met fin au processus avec élégance. Cette commande atteint-elle une terminaison gracieuse? Si ce n'est pas le cas, comment puis-je tuer un processus avec son nom avec élégance?
Réponses:
Votre question n'est pas claire, vous parlez d'un démon dans le titre, mais dans le corps ne parlez que d'un processus générique.
Pour un démon, il existe des moyens spécifiques pour l'arrêter, par exemple dans Debian vous avez
ou
Des syntaxes similaires existent pour d'autres normes initscript utilisées dans d'autres distributions / OS.
Pour tuer un processus non démon, en supposant qu'il est en quelque sorte hors de contrôle, vous pouvez utiliser en toute sécurité
killall
oupkill
, étant donné qu'ils utilisent par défaut leSIGTERM
signal (15), et toute application décemment écrite devrait intercepter et quitter avec élégance à la réception de ce signal . Tenez compte du fait que ces utilitaires peuvent tuer plus d'un processus, s'il y en a plusieurs avec le même nom.Si cela ne fonctionne pas, vous pouvez essayer
SIGINT
(2), puisSIGHUP
(1) et en dernier recoursSIGKILL
(9). Ce dernier signal ne peut pas être capté par l'application, de sorte qu'elle ne peut effectuer aucun nettoyage. Pour cette raison, il doit être évité chaque fois que vous le pouvez.Les deux
pkill
etkillall
accepter un paramètre de signal sous la forme-NAME
, comme dansla source
markdoc serve &
etsvnserve -d
. Je pense que c'est une sorte de démon, mais rien n'était certain pour moi :)killall
est le tueur!Sur BSD et d'autres distributions, vous aurez souvent des scripts dans /etc/rc.d/ qui gèrent généralement le démarrage, le redémarrage et l'arrêt des démons dans votre système. Pour arrêter un démon, vous devez soit appeler les scripts avec le chemin absolu, par exemple:
ou utilisez la commande:
Je recommande fortement d'essayer ce script pour montrer les démons démarrés et arrêtés de vos systèmes:
la source
Vérifiez la
killproc
fonction disponible dans le/etc/init.d/functions
script, sourcez le fichier et utilisez la fonction. Ou utilisezpgrep
etpkill
utilitaires pour vérifier s'ils fonctionnent correctement, puis utilisez-les. Exemple:pkill -SIGTERM mysqld
enverrait le signal de suppression TERM pour que mysqld effectue un arrêt sûr et vider les bases de données sur le disque, avant d'être tué.la source