Есть ли способ перенаправить вывод nohup в файл журнала, отличный от nohup.out?

113

Я часто использую программу, nohupтак что мои процессы защищены от зависаний. Поэтому, если я хочу сделать программу programнеуязвимой для зависаний, я использую команду

nohup program &

где &помещает процесс в фоновом режиме.

При запуске nohupвыдает сообщение:

nohup: добавление вывода в nohup.out

Есть ли способ отправить вывод в файл, кроме nohup.out? Часто я хочу запустить много процессов в одном и том же каталоге nohup, но если я это сделаю, все выходные данные будут объединены в один nohup.outфайл.

Страница руководства (например, здесь ), по-видимому, не имеет возможности указать файл журнала. Можете ли вы подтвердить это? Кроме того, у вас есть какие-либо мысли о том, как я могу обойти эту проблему?

Андрей
источник
3
Год спустя, но хороший исчерпывающий ответ был дан здесь: stackoverflow.com/questions/4549489/…
Рахул Джа,

Ответы:

133

nohupСтраница руководства по GNU coreutils указывает, что вы можете использовать обычное перенаправление:

Если стандартный ввод является терминалом, перенаправьте его из / dev / null. Если стандартный вывод является терминалом, добавьте вывод в 'nohup.out', если это возможно, в противном случае '$ HOME / nohup.out'. Если стандартной ошибкой является терминал, перенаправьте его на стандартный вывод. Чтобы сохранить вывод в файл, используйте «nohup COMMAND> FILE».

Изменить: я не прочитал вашу ссылку вначале; у вас может быть другая версия nohup, хотя этот раздел предполагает, что вы все еще можете использовать обычное перенаправление:

 nohup.out          The output file of the nohup execution if
                    standard  output is a terminal and if the
                    current directory is writable.

Вы можете перенаправить стандартный вывод и стандартную ошибку в разные файлы:

nohup myprogram > myprogram.out 2> myprogram.err

или в тот же файл:

nohup myprogram > myprogram.out 2>&1
lk-
источник
54
Чтобы ответить конкретно: используйте, nohup program > program.out &чтобы записать вывод program.outвместоnohup.out
Джим Пэрис
4
И это не специфично для утилит GNU, поведение определяется POSIX.
Жиль
3
Это не похоже на работу. Он перенаправляет вывод команды nohup вместо вывода myprogram.
Крис
2
Перенаправление @Kris должно произойти до завершающего &символа
yunzen