Est-il possible de laisser un processus démarré avec nohup, d'écrire sur stdout plutôt que dans un fichier? ou peut-être dans le fichier et à l'écran?
nohup python start.py &
écrit nohup.out
, mais j'aimerais qu'il s'affiche à l'écran, nohup n'est conçu comme une haie que lorsque la connexion est rompue.
Réponses:
nohup python start.py & tail -f nohup.out
Letail -f
peut être tué et redémarré à volonté.screen python start.py
et se déconnecter / se reconnecter à volonté.la source
De
man nohup
:(entièrement révisé en fonction des commentaires)
Lors de la fermeture d'un shell ou de la fermeture d'un terminal, les processus enfants seront envoyés SIGHUP (raccrochage, le nom provient du moment où les terminaux se connecteraient à l'ordinateur UNIX) pour leur dire que le terminal n'est pas plus connecté. De plus, à la fin du processus shell, les flux stdin, stdout et stderr du processus enfant seront fermés. Cela entraîne généralement la mort du processus enfant. Habituellement, c'est une bonne chose car cela évite de laisser les processus s'exécuter sans utilisateur.
Le but du
nohup
programme est de maintenir le processus en marche même après la fin du shell et la déconnexion du terminal. En tant que tel, diriger sa sortie vers le terminal va complètement à l'encontre du but. Ma réponse d'origine (nohup COMMAND | cat
) n'a pas été utile car: lorsque le terminal est fermé, la sortie de chat est fermée et donc chat meurt, ce qui rompt le tuyau et envoie un SIGPIPE au processus nohup le faisant mourir. J'avais répondu à la question sans penser à l'objectif.Pour atteindre votre objectif, exécutez
nohup COMMAND > FILE
pour sélectionner le nom du fichier vers lequel diriger la sortie. Ensuite, utiliseztail -f FILE
pour regarder la sortie sur un terminal.De même, on pourrait utiliser la construction shell suivante:
COMMAND >FILE 2>&1 </dev/null &
pour exécuter une commande dont les flux stdio ne sont pas connectés au terminal et peuvent continuer à fonctionner après la fermeture du terminal. De plus, dans zsh, exécutez le shell-builtindisown
pour dire à zsh de quitter le processus au lieu de le tuer à la fin du shell.la source
tail -f filename
pour voir ce qui est écrit dans le fichier.la source