Могу ли я изменить имя `nohup.out`?


254

Когда я бегу nohup some_command &, вывод идет в nohup.out; man nohupговорит, чтобы посмотреть на info nohupчто в свою очередь говорит:

Если стандартный вывод является терминалом, стандартный вывод команды добавляется в файл «nohup.out»; если это невозможно записать, он добавляется в файл '$ HOME / nohup.out'; и если это не может быть записано, команда не выполняется.

Но если у меня уже есть одна команда, использующая nohupвывод, /nohup.outи я хочу выполнить другую nohupкоманду, могу ли я перенаправить вывод nohup2.out?

Ответы:


416
nohup some_command &> nohup2.out &

и вуаля.


Более старый синтаксис для Bash версии <4:

nohup some_command > nohup2.out 2>&1 &

4
@ismail, если я понимаю, это перенаправляет вывод из stdout и nohup.out в nohup2.out. Тогда что же 2>&1&делать?
Дэвид Лебауэр

12
2>&1перенаправляет stderrна тот же выходной файл, stdoutкоторый есть в этом случаеnohup2.out
ismail

17
В Bash 4 два перенаправления могут быть сокращены как одно &> nohup2.out.
ephemient

1
Я попытался &> nohup2.out, и это работает, но как вы можете сказать свою версию Bash?
Monkut

9
@monkut bash --version
ismail

58

По какой-то причине вышеупомянутый ответ не работал для меня; Я не вернулся в командную строку после запуска, как я ожидал с помощью завершающего символа &. Вместо этого я просто попробовал с

nohup some_command > nohup2.out&

и это работает так, как я хочу. Оставьте это здесь на случай, если кто-то еще окажется в такой же ситуации. Запуск Bash 4.3.8 для справки.


12

Поскольку обработчики файлов указывают на i-узлы (которые хранятся независимо от имен файлов) в системах Linux / Unix, вы можете переименовать имя по умолчанию nohup.outв любое другое имя файла в любое время после запуска nohup something&. Так же можно сделать следующее:

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

Теперь somethingдобавляет строки к nohup2.outи something2к nohup.out.


10

Приведенные выше методы удаляют данные вашего выходного файла всякий раз, когда вы запускаете команду nohup.

Чтобы добавить вывод в пользовательский файл, вы можете использовать >>команду nohup.

nohup your_command >> filename.out &

Эта команда добавит все выходные данные в ваш файл без удаления старых данных.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.