Ответ 1
nohup some_command &> nohup2.out&
и вуаля.
Более старый синтаксис для версии Bash 4:
nohup some_command > nohup2.out 2>&1&
Когда я запускаю nohup some_command &
, вывод идет на nohup.out
; man nohup
говорит о info nohup
, который, в свою очередь, говорит:
Если стандартный вывод является терминалом, добавляется стандартный вывод команды к файлу nohup.out; если это не может быть записано, оно добавлено к файлу '$ HOME/nohup.out'; и если которые не могут быть записаны, команда не запускается.
Но если у меня уже есть одна команда, использующая nohup
с выходом, идущим на /nohup.out
, и я хочу запустить другую команду nohup
, могу ли я перенаправить вывод на nohup2.out
?
nohup some_command &> nohup2.out&
и вуаля.
Более старый синтаксис для версии Bash 4:
nohup some_command > nohup2.out 2>&1&
По какой-то причине вышеупомянутый ответ не сработал у меня; Я не вернулся в командную строку после запуска, как я ожидал, с помощью trailing &. Вместо этого я просто попробовал
nohup some_command > nohup2.out&
и он работает так, как я хочу. Оставляя это здесь, если кто-то другой находится в той же ситуации. Запуск Bash 4.3.8 для справки.
Поскольку обработчики файлов указывают на i-узлы (которые хранятся независимо от имен файлов) в системах Linux/Unix, вы можете переименовать значение по умолчанию nohup.out
в любое другое имя файла после запуска nohup something&
. Таким образом, можно было бы сделать следующее:
$ nohup something&
$ mv nohup.out nohup2.out
$ nohup something2&
Теперь something
добавляет строки к nohup2.out
и something2
в nohup.out
.
Выше методы удалят ваши данные выходного файла всякий раз, когда вы выполняете команду nohup.
Чтобы добавить вывод в пользовательский файл, вы можете использовать >>
в команде nohup.
nohup your_command >> filename.out &
Эта команда добавит весь вывод в ваш файл, не удаляя старые данные.