J’ai exécuté un script perl en arrière-plan en utilisant la commande suivante
nohup perl myPerlSCript.pl >debug_log &
Après quelques minutes, j’ai le statut de
[1] + Arrêté
Je ne m’attendais pas à ce que ça s’arrête, je ne sais pas non plus ce qui l’a arrêté. Comment puis-je déboguer ceci et découvrir pourquoi il s’est arrêté? Je suis en fait intéressé à connaître les commandes unix à déboguer.
Un processus exécuté en arrière-plan peut être arrêté de plusieurs manières. Tous impliquent l’un de ces signaux:
SIGSTOP
SIGTSTP
SIGTTOU
SIGTTIN
SIGSTOP
est grave. C’est impossible à débloquer, inimaginable, impossible à manipuler. Il arrête le processus aussi sûrement que SIGKILL
le tuerait. Les autres peuvent être manipulés par le processus d’arrière-plan pour empêcher l’arrêt.
kill(2)
, ou par le processus à lui-même en utilisant raise(3)
ou kill(2)
tostop
est activée (voir la sortie de stty -a
). Cela génère SIGTTOU
. tcsetattr(3)
ou un ioctl
équivalent. (Ce sont les mêmes modes que stty
.) Cela génère SIGTTOU
indépendamment de l’état actuel de l’indicateur tostop
. SIGTTIN
. Cette liste est probablement très incomplète.
Utilisez-vous tcsh par hasard? Tcsh est en fait livré avec une commande Nohup intégrée dans laquelle j’ai rencontré beaucoup de problèmes avant de voir le comportement exact que vous voyez.
Essayez d’utiliser /usr/bin/nohup
directement si c’est le cas.