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

Kiran
la source
Jetez un œil à cette page. xaprb.com/blog/2006/06/06/what-does-devnull-21-mean
richard.g

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

Evil Dead
la source
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é.

Jim Hunziker
la source