Comment rediriger la sortie d'une application en arrière-plan vers / dev / null


100

Je voudrais rediriger la sortie générée à partir d'une application d'arrière-plan sous Linux vers / dev / null.

J'utilise l'éditeur de texte kate et il imprime tous les messages de débogage sur le terminal que je voudrais rediriger vers / dev / null.

Une idée comment faire?

Merci


Réponses:


230

Tu utilises:

yourcommand  > /dev/null 2>&1

S'il doit s'exécuter en arrière-plan, ajoutez un &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1signifie rediriger stdoutvers /dev/nullET stderrvers l'endroit où les stdoutpoints à ce moment

Si vous voulez stderrse produire sur la console et y stdoutaller, /dev/nullvous pouvez utiliser:

yourcommand 2>&1 > /dev/null

Dans ce cas stderrest redirigé vers stdout(par exemple votre console) et ensuite l'original stdoutest redirigé vers/dev/null

Si le programme ne doit pas se terminer, vous pouvez utiliser:

nohup yourcommand &

Sans aucun paramètre, toutes les sorties arrivent dans nohup.out


les deux fonctionnent, mais il y a une légère différence, mais ne vous en
souvenez

ah ok obtenu et ajouté l'autre version
evildead

S'il s'agit de la dernière commande d'un fichier bash, une chose que j'ai remarquée est qu'elle laisse la console de commande qui a appelé le fichier sans invite.
Dennis

@elig rediriger la sortie d'une application déjà en cours d'exécution n'est pas possible imo, ou du moins pas si facilement, car la redirection via dup2()se produit immédiatement après fork()mais avant exec*(). Une fois exec*()le programme exécuté, le shell n'a pas la capacité de rediriger la sortie de ce processus. Corrigez-moi si je me trompe, mais je ne connais pas un shell qui a implémenté une telle fonctionnalité.
evildead

3

Ceux-ci redirigeront également à la fois:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

bien que le manuel bash indique que le premier est préféré.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.