134 votes

Que fait `kill -0 $ pid` dans un script shell?

Fondamentalement, quel signal "0" représente-t-il, car ici je vois les numéros de SIGNAL commençant à 1.

124voto

CodeGnome Points 25402

C'est une Bonne Question, Parce que...

...il peut être difficile de trouver de la documentation sur ce signal spécial. En dépit de ce que les autres ont dit, la seule mention de ce signal en man 1 kill dans les systèmes basés sur Debian:

Particulièrement utile signaux comprennent HUP, INT, de TUER, d'ARRÊTER, de SUITE, et 0.

Pas particulièrement utile, surtout si vous ne connaissez pas déjà ce que le signal ne. Il n'est pas répertorié par la sortie de l' kill -l, de sorte que vous ne savez pas à ce sujet, sauf si vous savez déjà cela.

Où le Trouver Documenté

Sur Debian et Ubuntu systèmes, la sortie de l' man 2 kill dit, en partie:

Si sig est égal à 0, aucun signal n'est envoyé, mais la vérification des erreurs est toujours réalisée; cela peut être utilisé pour vérifier l'existence d'un ID de processus ou groupe de processus ID.

Ce que C'est Bon Pour

Vous pouvez utiliser kill -0 pour vérifier si un processus est en cours d'exécution. Considérez ces exemples.

# Kill the process if it exists and accepts signals from
# the current user.
sleep 60 &
pid=$!
kill -0 $pid && kill $pid

# Check if a PID exists. When missing, this should result
# in output similar to:
#    bash: kill: (6228) - No such process
#    Exit status: 1
kill -0 $pid; echo "Exit status: $?"

Vous pouvez également utiliser kill -0 afin de déterminer si l'utilisateur possède les autorisations pour signaler un processus donné. Par exemple:

# See if you have permission to signal the process. If not,
# this should result in output similar to:
#     bash: kill: (15764) - Operation not permitted
#     Exit status: 1
sudo sleep 60 &
kill -0 $!; echo "Exit status: $?"

6voto

fgm Points 5930

Cette commande vérifie si le processus avec PID dans $ pid est actif.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by: