150 votes

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

En fait, quel signal représente "0", parce que aquí Je vois des numéros de SIGNAUX commençant par 1.

3 votes

3 votes

Voir également le Variante Unix.SE de cette question qui diffère de kill 0 (sans tiret), a expliqué aquí y aquí .

1voto

Anthony Rutledge Points 280

Envoi de la EXIT ou 0 à une volonté de processus :

  1. Vérifier l'existence d'un processus.
  2. Effectuer diverses vérifications d'erreurs sur le processus (PID, PGID, etc...).
  3. Il n'enverra aucune sortie à stdout en cas de succès.
  4. Envoyez un message d'erreur à stderr si quelque chose ne va pas.
  5. Vous donner un faux positif si le processus est défunt (c'est-à-dire Zombie).

Plus explicitement, une fonction utile pour vos scripts shell serait :

function isProcess ()
{
    kill -s EXIT $1 2> /dev/null
}

Cela ne renvoie aucun texte à stdout en cas de succès, mais un message d'erreur à stderr en cas d'échec (mais j'ai redirigé ce message d'erreur vers /dev/null ).

Si vous êtes préoccupé par le statut de processus défunt / zombie alors vous devez utiliser ps de préférence avec le --no-headers interrupteur.

#!/bin/ksh

function trim ()
{
    echo -n "$1" | tr -d [:space:]
}

function getProcessStatus ()
{
    trim $(ps -p $1 -o stat --no-headers)
}

function isZombie ()
{
    typeset processStatus=$(getProcessStatus $1)

    [[ "$processStatus" == "Z" ]]
    return $?
}

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:

X