286 votes

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

Quand je cours nohup some_command & la sortie va à nohup.out ; man nohup dit de regarder info nohup qui à son tour dit :

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

Mais si j'ai déjà une commande utilisant nohup avec une sortie vers /nohup.out et je veux en exécuter un autre, nohup je peux rediriger la sortie vers nohup2.out ?

0 votes

Savez-vous si les réponses proposées redirigent également les erreurs vers l'emplacement donné ?

0 votes

J'ai personnellement trouvé plus utile de faire nohup python script.py > my_output.out &

482voto

ismail Points 19146
nohup some_command &> nohup2.out &

et voilà.


Ancienne syntaxe pour la version de Bash < 4 :

nohup some_command > nohup2.out 2>&1 &

4 votes

@ismail, si je comprends bien, cela dirige la sortie loin de stdout et nohup.out, vers nohup2.out. Alors que fait 2>&1& faire ?

12 votes

2>&1 redirige vers stderr vers le même fichier de sortie que stdout qui est dans ce cas nohup2.out

19 votes

Dans Bash 4, les deux redirections peuvent être abrégées en une seule. &> nohup2.out .

67voto

Godsmith Points 334

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ée comme je m'y attendais avec le & de fin de ligne. Au lieu de cela, j'ai simplement essayé avec

nohup some_command > nohup2.out&

et ça fonctionne comme je le veux. Je laisse ceci ici au cas où quelqu'un d'autre serait dans la même situation. J'exécute Bash 4.3.8 pour référence.

0 votes

Est-ce que cela redirige également stderr ? Je veux tout diriger, qu'il s'agisse d'une erreur ou d'une sortie vers une source unique.

17voto

Irshad Khan Points 31

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

A Ajouter la sortie dans un fichier défini par l'utilisateur vous pouvez utiliser >> dans la commande nohup.

nohup your_command >> filename.out &

Cette commande ajoutera tous les résultats dans votre fichier sans supprimer les anciennes données.

2 votes

Est-ce que cela redirige aussi stderr ? Je veux tout diriger, qu'il s'agisse d'une erreur ou d'une sortie vers une source unique.

13voto

TrueY Points 2676

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

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

Maintenant something ajoute des lignes à nohup2.out y something2 a nohup.out .

0 votes

Est-ce que cela redirige également stderr ? Je veux tout diriger, qu'il s'agisse d'une erreur ou d'une sortie vers une source unique.

0 votes

@CharlieParker En fait, vous pouvez. Voir stackoverflow.com/questions/12820616/

1voto

kodmanyagha Points 96

Mon start.sh fichier :

#/bin/bash

nohup forever -c php artisan your:command >>storage/logs/yourcommand.log 2>&1 &

Il n'y a qu'une seule chose importante. La première commande doit être "nohup", la deuxième commande doit être "forever" et le paramètre "-c" est le paramètre de forever, la zone "2>&1 &" est pour "nohup". Après avoir exécuté cette ligne alors vous pouvez vous déconnecter de votre terminal, vous reconnecter et exécuter "forever restartall" voila... Vous pouvez redémarrer et vous pouvez être sûr que si script s'arrête alors forever le relancera.

Je <3 pour toujours

0 votes

Est-ce que cela redirige également stderr ? Je veux tout diriger, qu'il s'agisse d'une erreur ou d'une sortie vers une source unique.

1 votes

Oui, cela redirige stderr vers le fichier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X