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: ERREUR: object_proxy.cc (532)] Échec de l'appel de la méthode: org.chromium.Mtpd.EnumerateStorag ...
Qu'est-ce que je fais mal? Comment rediriger tous 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é placé en premier sur 2>&1
, ce qui indique 2
au même endroit que 1
actuellement pointé sur l'écran du terminal local car vous n'avez pas redirigé 1
Encore. 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.
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 stderr
et stdout
vers 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 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