J'ai un programme que je dois exécuter au démarrage, il a une sortie sur stdout et stderr que je veux rediriger vers le journal système à l'aide de la commande logger. Ce que j'ai dans mon script de démarrage, c'est:
/home/dirname/nom_application -v | logger 2> & 1 &
Ceci redirige très bien la stdout vers syslog mais stderr arrive sur la console, j'ai donc besoin d'affiner la commande.
Vous devez combiner la sortie de STDERR et STDOUT avant de la rediriger vers logger
. Essayez plutôt ceci:
/home/dirname/application_name -v 2>&1 | logger &
$ echo "hi" 2>&1 | logger &
[1] 26818
[1]+ Done echo "hi" 2>&1 | logger
$ Sudo tail /var/log/messages
Apr 12 17:53:57 greeneggs saml: hi
Vous pouvez également utiliser la notation abrégée ici, si elle est utilisée avec précaution dans un shell Bash réel (à ne pas confondre avec Dash):
$ echo "hi" |& logger &
REMARQUE: Cela équivaut à <cmd1> 2>&1 | <cmd2>
. Encore une fois, utilisez uniquement ce qui précède lors de l'utilisation interactive d'un shell Bash réel, ce serait un bon moyen de l'approcher.
extrait de ABSG
# | & a été ajouté à Bash 4 comme abréviation pour 2> & 1 |.