Supposons que j'exécute une commande dans une session shell, par exemple bash -c 'apt-get update && apt-get upgrade'
. 5 minutes plus tard, je décide de sortir pour une collation et je réalise que j'ai oublié d' ajouter une forme de mécanisme de notification pour savoir si la sortie a été un succès ou un échec.
Eh bien, qu'est-ce que je fais maintenant? Si seulement je pouvais interroger à partir d'un autre terminal l'état de sortie de cette autre commande (ou spécifiquement, ce PID), peut-être que je pourrais après tout afficher une sorte de pop-up. La question est donc: comment puis-je interroger l'état de sortie d'un processus déjà en cours d'exécution à partir d'un autre terminal?
En d'autres termes,
DONNÉ que j'ai un processus en cours dans le terminal A ET que son PID est connu
QUAND j'exécute une commande dans le terminal B
ALORS je devrais pouvoir savoir si le processus dans le terminal A se termine avec un état de sortie 0 ou un état de sortie> 1.
la source
wait
pour obtenir le code d'un processus d'arrière-plan dans votre shell actuel, une fois celui-ci terminé, mais je n'ai rien trouvé qui permettrait d'interroger d'autres shells. Le simple fait de surveiller si un processus est toujours en cours d'exécution et de déclencher une alerte une fois qu'il est terminé est également trivial, mais ne pas trouver son code de sortie. La seule façon dont je pourrais penser serait de préparer votre shellPROMPT_COMMAND
pour stocker le dernier code de sortie dans un fichier temporaire ou un emplacement accessible similaire. Serait-ce une option?Réponses:
Utilisez
strace
comme suit:Ni les appels système ni les signaux ne sont intéressants ici, donc nous disons
strace
de les ignorer avec les-e
expressions et de supprimer un message d'état avec-q
.strace
s'attache au processus avec PID$PID
, attend qu'il se termine normalement et affiche son état de sortie comme ceci:Une
if
expression simple pour appeler n'importe quel type de notification pourrait être:Exemple d'exécution
La plupart du mérite revient à cette réponse sur U&L , veuillez y laisser un vote positif si vous trouvez cela utile.
la source