Nous avons un long processus sur un serveur distant qui est lancé manuellement de temps en temps. Malheureusement, les connexions Internet meurent, les noyaux paniquent et toute une série d'autres défis peuvent être rencontrés par la session ssh utilisée pour se connecter et démarrer le travail.
L'écran semble être un moyen idéal pour s'assurer que le processus n'est pas interrompu. Cependant, compter sur une personne pour toujours se rappeler de démarrer l'écran puis d'exécuter le script pour démarrer le processus est un problème qui attend. Existe-t-il un moyen à partir du script que je puisse vérifier pour voir si le script est appelé depuis l'écran? Si c'est le cas, le processus continuera sinon le script se terminera avec un message demandant à l'utilisateur d'exécuter l'écran en premier.
la source
Réponses:
Il existe une variable d'environnement pour cela. S'il est exécuté dans l'écran, le
$TERM
serascreen
. C'est si simple; faites juste un if dessus. Par exemple,fera écho bar quand à l'écran; foo sinon.
la source
screen-256color
cas si l'utilisateur a configuré la prise en charge de 256 couleurs.Pendant que vous travaillez avec l'écran, pourquoi ne pas exécuter le script avec 'nohup'? Cela garantira également qu'il continuera de fonctionner si vous êtes déconnecté.
Il sort dans un fichier par défaut, vous pouvez donc utiliser d'autres outils pour surveiller la sortie du script si vous le souhaitez.
la source