Могу ли я изменить имя `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 для справки.

Godsmith
источник
12

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

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

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

TrueY
источник
10

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

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

nohup your_command >> filename.out &

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

Иршад Хан
источник