Je suis ssh
sur un serveur et je démarre un script Python qui prendra environ. 24 heures pour terminer. Et si ma connexion Internet s'éteint au milieu? Est-ce que cela arrêtera la commande?
Existe-t-il un moyen d'exécuter ma commande de longue durée de manière à ce que les déconnexions locales ne l'affectent pas et que je puisse continuer à voir sa sortie après une nouvelle connexion ssh
?
screen -r
vous vous reconnecterez.Vous pouvez également utiliser
disown
si vous avez déjà commencé le processus sansscreen
ounohup
la source
Les réponses existantes peuvent bien fonctionner, mais j'avais besoin de quelque chose pour BusyBox (un shell et un ensemble d'outils pour un matériel minimal comme les routeurs domestiques). Mon système ne dispose pas
screen
,dtach
,at
,disown
, ou mêmenohup
! Donc grâce à tbc0 sur SO ( lien ), j'ai trouvé ce bijou. Il revient immédiatement mais le processus serveur continue de s'exécuter:Ou, si plusieurs commandes sont nécessaires:
Explication:
>&-
- fermer la poignée standard2>&-
- fermer stderr<&-
- fermer stdin&
- mettre le processus en arrière-planCela n'utilise aucun programme externe et devrait fonctionner sur ksh, ash, Bourne shell, bash, etc.
la source
Si vous fondez un processus et fermez votre session, le processus sera adopté par init (PID 1).
Si j'ai une session et que je fais:
et ouvrez une autre session et exécutez:
Mon processus est toujours en cours d'exécution et nous voyons que son processus parent est désormais 1 (init).
Alternativement, vous pouvez configurer votre script comme vous le feriez pour un démon. Une recherche rapide révèle ce lien apparemment utile: http://onlamp.com/python/pythoncook2/solution.csp?day=1 . Si vous vouliez adopter cette approche.
la source