Existe-t-il un moyen de rediriger la sortie nohup vers un fichier journal autre que nohup.out?

113

J'utilise fréquemment le programme nohupafin que mes processus soient à l'abri des blocages. Donc, si je veux que le programme soit programimmunisé contre le blocage, j'utilise la commande

nohup program &

&met le processus en arrière-plan.

Au début, nohupme donne le message:

nohup: ajout du résultat à `nohup.out '

Est-il possible d'envoyer la sortie vers un fichier autre que nohup.out? Souvent, je souhaite exécuter plusieurs processus dans le même répertoire en utilisant nohup, mais si je le fais, toute la sortie est regroupée dans un seul nohup.outfichier.

La page de manuel ( ici , par exemple ) ne semble pas avoir d’option permettant de spécifier le fichier journal. Pouvez-vous s'il vous plaît confirmer cela? Aussi, avez-vous une idée de la manière dont je pourrais résoudre ce problème?

Andrew
la source
3
Un an de retard, mais une bonne réponse complète a été donnée ici: stackoverflow.com/questions/4549489/…
Rahul Jha

Réponses:

133

La nohuppage de manuel GNU coreutils indique que vous pouvez utiliser la redirection normale:

Si l'entrée standard est un terminal, redirigez-le à partir de / dev / null. Si la sortie standard est un terminal, ajoutez si possible la sortie à 'nohup.out', sinon '$ HOME / nohup.out'. Si l'erreur standard est un terminal, redirigez-le vers la sortie standard. Pour enregistrer la sortie dans FILE, utilisez 'nohup COMMAND> FILE'.

Edit: je n'ai pas lu votre lien au début; vous pouvez avoir une version différente de nohup, bien que cette section suggère que vous pouvez toujours utiliser la redirection normale:

 nohup.out          The output file of the nohup execution if
                    standard  output is a terminal and if the
                    current directory is writable.

Vous pouvez rediriger la sortie standard et l'erreur standard vers différents fichiers:

nohup myprogram > myprogram.out 2> myprogram.err

ou dans le même fichier:

nohup myprogram > myprogram.out 2>&1
lk-
la source
54
Pour répondre spécifiquement: utilisez nohup program > program.out &pour écrire la sortie à la program.outplace denohup.out
Jim Paris
4
Et ce n'est pas spécifique aux utilitaires GNU, le comportement est spécifié par POSIX.
Gilles
3
Cela ne semble pas fonctionner. Il redirige la sortie de la commande nohup plutôt que la sortie de myprogram.
Kris
2
@Kris La redirection doit avoir lieu avant le dernier &caractère
minuit 29 min