Comment rediriger toutes les sorties vers/dev / null?

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

J'ai essayé de faire ceci:

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

Cependant, le terminal se remplit toujours sans messages comme:

[5746:5746:0802/100534:erreur: object_proxy.cc(532)] échec de l'appel de la méthode: org.chrome.Mtpd.EnumerateStorag...

Ce que je fais mal? Comment rediriger Tout la sortie vers /dev/null?

58
demandé sur totymedli 2013-08-02 13:07:28

3 réponses

Les opérateurs de Redirection sont évalués de gauche à droite. ce que vous avez mal fait a été mis 2>&1 en premier, qui pointe 2 au même endroit que {[4] } est actuellement pointé vers lequel est l'écran du terminal local parce que vous n'avez pas encore redirigé 1. Ce que vous devez faire est l'une des opérations suivantes:

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.

65
répondu Michael Martinez 2017-07-28 18:35:07

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 les deux stderr et stdout à file, vous devez utiliser le formulaire

&>file

En ce qui concerne votre cas, cela signifie substitut

2>&1 1>/dev/null

Avec

&>/dev/null
37
répondu user1146332 2013-08-02 09:19:01

Il semble que la syntaxe soit différente:

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

Afficher les périphériques pour FD = 2 sont différentes 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
1
répondu Sergei Kurenkov 2013-08-02 09:32:18