Czy mogę zmienić nazwę „nohup.out”?

254

Kiedy uruchamiam nohup some_command &, wyjście przechodzi do nohup.out; man nohupmówi, aby spojrzeć na to, info nohupco z kolei mówi:

Jeśli standardowym wyjściem jest terminal, standardowe wyjście polecenia jest dołączane do pliku „nohup.out”; jeśli nie można tego zapisać, jest on dołączany do pliku „$ HOME / nohup.out”; a jeśli nie można tego zapisać, polecenie nie jest uruchamiane.

Ale jeśli mam już jedną komendę używającą nohupwyjścia /nohup.outi chcę uruchomić inną nohupkomendę, czy mogę przekierować dane wyjściowe do nohup2.out?

David LeBauer
źródło

Odpowiedzi:

416
nohup some_command &> nohup2.out &

i voila.


Starsza składnia dla wersji Bash <4:

nohup some_command > nohup2.out 2>&1 &
ismail
źródło
4
@ismail, jeśli rozumiem, przekierowuje to wyjście ze stdout i nohup.out do nohup2.out. Co wtedy robi 2>&1&?
David LeBauer,
12
2>&1przekierowuje stderrdo tego samego pliku wyjściowego, stdoutco w tym przypadkunohup2.out
ismail
17
W Bash 4 dwa przekierowania można skrócić jako jeden &> nohup2.out.
ephemient
1
Próbowałem &> nohup2.out i działa, ale jak możesz powiedzieć, że masz wersję bash?
monkut
9
@monkut bash version
Ismail
58

Z jakiegoś powodu powyższa odpowiedź nie działała dla mnie; Nie wróciłem do wiersza polecenia po uruchomieniu, jak się spodziewałem z końcowymi &. Zamiast tego po prostu spróbowałem

nohup some_command > nohup2.out&

i działa tak, jak chcę. Pozostawiając to tutaj, na wypadek, gdyby ktoś był w takiej samej sytuacji. Uruchomienie Bash 4.3.8 w celach informacyjnych.

Godsmith
źródło
12

Ponieważ procedury obsługi plików wskazują na i-węzły (które są przechowywane niezależnie od nazw plików) w systemach Linux / Unix, możesz zmienić nazwę domyślną nohup.outna inną nazwę pliku w dowolnym momencie po uruchomieniu nohup something&. Więc można również wykonać następujące czynności:

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

Teraz somethingdodaje linie do nohup2.outi something2do nohup.out.

Prawda
źródło
10

Powyższe metody usuwają dane pliku wyjściowego za każdym razem, gdy uruchomisz komendę nohup.

Aby dołączyć dane wyjściowe do pliku zdefiniowanego przez użytkownika , możesz użyć >>polecenia nohup.

nohup your_command >> filename.out &

To polecenie doda wszystkie dane wyjściowe do pliku bez usuwania starych danych.

Irshad Khan
źródło