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

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

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

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

Ответ 1

nohup some_command &> nohup2.out&

и вуаля.


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

nohup some_command > nohup2.out 2>&1&

Ответ 2

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

nohup some_command > nohup2.out&

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

Ответ 3

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

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

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

Ответ 4

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

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

nohup your_command >> filename.out &

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