Puis-je changer le nom de `nohup.out`?

254

Lorsque je cours nohup some_command &, la sortie passe à nohup.out; man nohupdit de regarder info nohupce qui à son tour dit:

Si la sortie standard est un terminal, la sortie standard de la commande est ajoutée au fichier 'nohup.out'; si cela ne peut pas être écrit, il est ajouté au fichier '$ HOME / nohup.out'; et si cela ne peut pas être écrit, la commande n'est pas exécutée.

Mais si j'ai déjà une commande à utiliser nohupavec une sortie vers /nohup.outet que je veux en exécuter une autre, nohupcommande, puis-je rediriger la sortie vers nohup2.out?

David LeBauer
la source

Réponses:

416
nohup some_command &> nohup2.out &

et le tour est joué.


Syntaxe plus ancienne pour la version Bash <4:

nohup some_command > nohup2.out 2>&1 &
ismail
la source
4
@ismail, si je comprends bien, cela dirige la sortie loin de stdout et nohup.out, dans nohup2.out. Alors qu'est-ce que ça 2>&1&fait?
David LeBauer
12
2>&1redirige stderrvers le même fichier de sortie que celui stdoutqui est dans ce casnohup2.out
ismail
17
Dans Bash 4, les deux redirections peuvent être abrégées en une seule &> nohup2.out.
éphémère
1
J'ai essayé &> nohup2.out et cela fonctionne, mais comment pouvez-vous dire votre version bash?
monkut
9
@monkut bash --version
ismail
58

Pour une raison quelconque, la réponse ci-dessus n'a pas fonctionné pour moi; Je ne suis pas retourné à l'invite de commande après l'avoir exécuté comme je m'y attendais avec le &. Au lieu de cela, j'ai simplement essayé avec

nohup some_command > nohup2.out&

et ça marche comme je le veux. Laissant cela ici au cas où quelqu'un d'autre serait dans la même situation. Exécution de Bash 4.3.8 pour référence.

Marraine
la source
12

Comme les gestionnaires de fichiers pointent vers des nœuds i (qui sont stockés indépendamment des noms de fichiers) sur les systèmes Linux / Unix Vous pouvez renommer la valeur par défaut nohup.outen n'importe quel autre nom de fichier à tout moment après le démarrage nohup something&. Donc, on pourrait aussi faire ce qui suit:

$ nohup something&
$ mv nohup.out nohup2.out
$ nohup something2&

somethingAjoute maintenant des lignes vers nohup2.outet something2vers nohup.out.

TrueY
la source
10

Les méthodes ci-dessus suppriment les données de votre fichier de sortie chaque fois que vous exécutez la commande nohup ci-dessus.

Pour ajouter une sortie dans un fichier défini par l'utilisateur, vous pouvez utiliser la >>commande nohup.

nohup your_command >> filename.out &

Cette commande ajoutera toutes les sorties dans votre fichier sans supprimer les anciennes données.

Irshad Khan
la source