2 votes

Comment éviter qu'un processus nohup soit tué lorsque la connexion ssh échoue ?

J'ai un drôle de problème. J'ai un processus serveur qui est lancé avec nohup, et qui persiste après une déconnexion et une reconnexion sans problème. Cependant, si je reste connecté et que je reçois le message "broken pipe" parce que mon ordinateur portable s'est endormi, je reviens pour constater que le processus s'est arrêté à peu près au moment où mon ordinateur portable s'est endormi (il est difficile de vérifier exactement quand c'était). Cela se produit même si je me déconnecte et me reconnecte depuis le début du processus.

Pourquoi cela se produit-il ? Je pensais que nohup signifiait qu'il ignorait SIGHUP ? Est-ce qu'un autre signal est envoyé ? Je suis conscient de l'existence de screen, mais y a-t-il un moyen d'éviter cela sans avoir recours à l'exécution des choses en screen (qui était la solution précédente que nous venons d'abandonner) ?

La commande dans le script qui lance le processus ressemble à ceci...

nohup attivio -cmd start -nodump -project="$ATTIVIO_PROJECT" -node $NODENAME $ATTIVIO_ARGS foo.xml 2>&1 > $LOG_DIR/attivio.console.log &

Le script a été invoqué comme ceci :

source bin/start.sh

3voto

user98296 Points 89

Le signal HUP n'est pas la seule chose qui peut arrêter ou tuer un processus lorsqu'un terminal se déconnecte. Il n'y aura pas de tty de contrôle, donc certains programmes peuvent encore échouer pour cette raison. Les tentatives de sortie peuvent provoquer une erreur. Si le programme a une lecture active, il peut également obtenir une erreur.

Ce sont les raisons pour lesquelles j'utilise l'écran. Je ne vois aucune raison d'éviter l'écran.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X