перенаправление вывода nohup в другой файл

я использую nohup довольно часто для важных длительных процессов под linux/bash, Так что nohup time my command with arguments && mv nohup.out my.log - это почти идиома для меня.

проблема в том, что nohup ставит как stdout и stderr на nohup.out и я не могу контролировать имя файла. Это означает, что если я случайно запустить два nohups в том же каталоге, их вывод будет чередоваться в nohup.out.

вопросы:

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

  2. почему я не могу сказать команды nohup.куда перенаправить вывод? Инструменты GNU, как правило, имеют так много вариантов, почему бы и нет nohup?

5
задан sds
источник

3 ответов

Вы можете перенаправить stdout и stderr в один файл. С Bash 4 (или другими, такими как Zsh), так же просто, как:

nohup <some-command> &> output.log

Я не могу сказать вам, почему нет отдельной опции для nohup для установки вывода, но если ваша оболочка может позаботиться об этом, вам действительно не нужна опция.

6
отвечен slhck 2013-02-14 15:44:57
источник

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

nohup php your_command >> filename.out 2>&1 &

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

4
отвечен Irshad Khan 2018-04-20 07:10:28
источник

есть больше способов, чем просто nohup запустить процесс так, чтобы он игнорировал SIGHUP; например: (записывается как функции оболочки)

nohup() {
    setsid "$@"
}

nohup() {
    ("$@" &)
}

nohup() {
    "$@" & disown
}

(setsid, или даже (setsid "$@" &), может быть лучшим выбором.)

все они позволяют указать свои собственные перенаправления с >,2> и &>/>&.

3
отвечен grawity 2013-02-14 15:48:12
источник

Другие вопросы bash nohup