Je veux lancer un programme (google-chrome) en arrière-plan, mais l’empêcher de transmettre des messages au terminal.
J’ai essayé de faire ça:
google-chrome 2>&1 1>/dev/null &
Cependant, le terminal se remplit toujours de messages tels que:
[5746: 5746: 0802/100534: ERREUR: object_proxy.cc (532)] Impossible d’appeler la méthode: org.chromium.Mtpd.EnumerateStorag …
Qu’est-ce que je fais mal? Comment redirect toute la sortie vers /dev/null
?
Les opérateurs de redirection sont évalués de gauche à droite. ce que vous avez fait de mal a été mis 2>&1
premier, qui pointe 2
au même endroit que 1
actuellement pointé vers l’écran du terminal local car vous n’avez pas encore redirigé 1
. Ce que vous devez faire est l’un des suivants:
2>/dev/null 1>/dev/null google-chrome &
ou
2>/dev/null 1>&2 google-chrome &
Le placement des opérateurs de redirection par rapport à la commande n’a pas d’importance. Vous pouvez les mettre avant ou après la commande.
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 redirect à la fois stderr
et stdout
vers un file
vous devez utiliser le formulaire
&>file
En ce qui concerne votre cas, cela signifie remplacer
2>&1 1>/dev/null
avec
&>/dev/null
Il semble que la syntaxe soit différente:
./a.out 1>/dev/null 2>&1 &
Voir les périphériques 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 sur / 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 à / 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