75 votes

Comment rediriger toutes les sorties vers / dev / null

Je souhaite exécuter un programme (google-chrome) en arrière-plan, mais l'empêcher de transmettre des messages au terminal.

J'ai essayé de faire ceci:

 google-chrome 2>&1 1>/dev/null &
 

Cependant, le terminal se remplit toujours sans messages tels que [5746:5746:0802/100534:ERROR:object_proxy.cc(532)] Failed to call method: org.chromium.Mtpd.EnumerateStorag...

Qu'est-ce que je fais mal? Comment puis-je rediriger TOUT la sortie vers / dev / null?

84voto

Michael Martinez Points 580

les opérateurs de redirection sont évalués de gauche à droite. ce que vous avez fait de mal a été mis 2> & 1 en premier, ce qui pointe "2" au même endroit que "1 est actuellement désigné", ce qui correspond à l'écran du terminal local, car vous n'avez pas encore redirigé 1. Ce que vous devez faire est l’un des éléments suivants:

 2>/dev/null 1>/dev/null google-chrome &
 

ou

 2>/dev/null 1>&2 google-chrome &
 

l'emplacement des opérateurs de redirection par rapport à la commande n'a pas d'importance. vous pouvez les mettre avant ou après la commande.

47voto

user1146332 Points 1260

Dans la section Redirection le manuel de référence de bash dit:

L'opérateur [n]>&word est utilisé pour [...] dupliquer les descripteurs de fichier de sortie

Pour rediriger à la fois stderr et stdout file vous devez utiliser le formulaire.

 &>file
 

En ce qui concerne votre cas, cela signifie remplacer

 2>&1 1>/dev/null
 

avec

 &>/dev/null
 

3voto

skwllsp Points 9661

Il semble que la syntaxe soit différente:

 ./a.out 1>/dev/null 2>&1 &
 

Voir les appareils pour FD = 2 sont différents lorsque ./a.out 1>/dev/null 2>&1 et ./a.out 2>&1 1>/dev/null &

1) FD = 2 points vers / dev / null

 >./a.out 1>/dev/null 2>&1 &
[1] 21181
>lsof -p `pidof a.out`
COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
a.out   21181 xxxxxxxxxxxxxxx    0u   CHR 136,43      0t0        46 /dev/pts/43
a.out   21181 xxxxxxxxxxxxxxx    1w   CHR    1,3      0t0      3685 /dev/null
a.out   21181 xxxxxxxxxxxxxxx    2w   CHR    1,3      0t0      3685 /dev/null
 

2) FD = 2 points vers / dev / pts / 43

 >./a.out 2>&1 1>/dev/null &
[1] 25955
>lsof -p `pidof a.out`
COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
a.out   25955 xxxxxxxxxxxxxxx    0u   CHR 136,43      0t0        46 /dev/pts/43
a.out   25955 xxxxxxxxxxxxxxx    1w   CHR    1,3      0t0      3685 /dev/null
a.out   25955 xxxxxxxxxxxxxxx    2u   CHR 136,43      0t0        46 /dev/pts/43
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X