Comment puis-je empêcher nohup de créer le fichier ~ / nohup.out?

16

J'utilise la commande $ nohup ...pour démarrer une application en arrière-plan afin de pouvoir ensuite fermer la fenêtre du terminal.

Lors de l'exécution, il crée le fichier ~/nohup.out.

Exemple:

orschiro@x230:~$ nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py"
nohup: ignoring input and appending output to 'nohup.out'

Comment puis-je empêcher la nohupcréation nohup.out?

orschiro
la source
2
Vous pourriez également envisager byobu. :)
Andrea Lazzarotto
Merci, @AndreaLazzarotto! Pouvez-vous me donner un exemple d'utilisation?
orschiro
2
Eh bien, je vous suggère de regarder la vidéo ici: byobu.co Fondamentalement, pour ce que vous voulez faire, vous exécutez simplement byobu, commencez ce que vous voulez, puis appuyez sur F6et vous avez terminé. Vous pouvez y revenir en exécutant à byobunouveau.
Andrea Lazzarotto
Excellent! Vous voudrez peut-être ajouter ceci comme réponse officielle?
orschiro
Techniquement, ma suggestion ne répond pas du tout à votre question, c'est juste une alternative. : D
Andrea Lazzarotto

Réponses:

20

Vous pouvez rediriger la sortie où bon vous semble, par exemple:

nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1

la redirection empêche la nohup.outcréation du fichier de sortie par défaut . /dev/nullest l'oubli, donc si vous ne voulez pas du tout les données, envoyez-les là.

En bash, vous pouvez abréger >/dev/null 2>&1en&>/dev/null

Pour les programmes que j'utilise souvent, je crée un alias (et je l'ajoute à mon .bashrc) par exemple

alias show_state='nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1'

Maintenant, tout ce que je dois taper est show_state

Zanna
la source
2
@orschiro: Après quelques années, ce ne sera plus cryptique et vous vous en souviendrez;) Je suggère de rester avec, car le replacer signifie que vous ne gagnerez pas cette expérience, et de savoir comment les opérateurs de redirection BASH fonctionnent par le haut de votre tête est une compétence cruciale.
Courses de légèreté avec Monica
Ne serait-ce pas mieux en fonction? Quelque chose comme ça show_state () { /bin/bash -c "$@" &>/dev/null }? (Attention: mauvaise syntaxe et ne fonctionnera probablement pas! C'est juste un exemple!). Un nitpick: pourquoi show_statequand vous jetez la sortie de nohup?
Ismael Miguel
Je ne sais pas ce que fait le script @IsmaelMiguel mais je suppose que c'est un indicateur avec une icône de plateau, pas pour imprimer "état" (quel qu'il soit) sur stdout. Bien sûr, une fonction peut être plus amusante qu'un alias ^. ^
Zanna
Oh je l'ai! Désolé, je n'ai pas vu le nom du .pyfichier. Et oui, une fonction est plus amusante. J'ai cette fonction mal écrit sur un ordinateur de bureau Debian: shutup() { source "$@" >/dev/null 2>&1 & }. Et il fonctionne. Peut-être pourriez-vous suggérer quelque chose de similaire, mais beaucoup mieux?
Ismael Miguel
Je n'ai jamais su que cela &>fonctionnait (et à mon avis, cela ressemble à un arrière-plan plus une redirection standard). Je l'ai toujours appris comme >&. Est-ce standard?
Random832