Je ne sais pas si ce sont les seules raisons, mais voici mon exercice :
Selon la façon dont vous écrivez un shellscript pour tuer le processus souhaité, vous pourriez finir par tuer le kill PID avant qu'il ne tue votre cible, prenons mydaemon par exemple :
kill -9 `ps ax | grep mydaemon | awk '{ print $1 }'`
A) SIGPIPE-ing killDans un PID Linux 32 bits est généralement un entier de 15 bits, les débordements se produisent souvent, il y a une assez grande chance que les PID grep ou awk apparaissent avant celui de mydaemon . En 64 bits, les numéros PID sont généralement de 22 bits, cela a plus de 100 fois moins de chances de se produire, mais reste assez factuel.
En tuant l'un ou l'autre de vos tuyaux, vous recevrez un SIGPIPE et généralement cela signifie également la mort, donc tuez serait tué avant de tuer mydaemon rendant la tentative de mise à mort un échec.
B) Tuer d'autres PID Aussi, disons que vous aviez vi /etc/mydaemon/mydaemon.conf en cours d'exécution, ce PID peut également être tué, sans parler des processus des autres utilisateurs, car vous lancerez très probablement une telle commande en tant que root.
C) C'est un simple verrou de type Unix -> Aucun code/démon supplémentaire n'est requis.
Les fichiers pid contiennent l'identifiant de processus (un nombre) d'un programme donné. Par exemple, Apache HTTPD peut écrire son numéro de processus principal dans un fichier pid - qui est un fichier texte normal, rien de plus - et utiliser ultérieurement les informations qu'il contient pour s'arrêter. Vous pouvez également utiliser ces informations pour tuer le processus vous-même, en utilisant cat filename.pid | xargs kill