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 ça:
/ 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.
shell
io-redirection
stdout
stdin
fred basset
la source
la source
>&
: tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-3.htmlRéponses:
Vous devez combiner la sortie de STDERR et STDOUT avant de la canaliser
logger
. Essayez plutôt ceci:Exemple
Vous pouvez également utiliser la notation abrégée ici, si elle est utilisée avec précaution dans un véritable shell Bash (à ne pas confondre avec Dash):
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 d' ABSG
Les références
la source
dash
essayez d'exécuter le script au démarrage pour échouer et accélérer votre processus de démarrage ... eh bien ... Quand une telle syntaxe est mentionnée, elle devrait toujours être dans le contexte des shells interactifs uniquement , ou, du moins, tel est mon avis.2>&1
mais vos avertissements sont assez sages, étant donné que l'exemple concerne les startups. Je mettrai ces derniers conseils en évidence avec un avertissement qu'ils sont destinés uniquement aux shells Bash interactifs.dash
, cependant - c'est vraiment rapide.