перенаправление вывода 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?

30
задан sds
28.03.2023 10:55 Количество просмотров материала 2734
Распечатать страницу

3 ответа

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

nohup <some-command> &> output.log

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

6
отвечен slhck 2023-03-29 18:43

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

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

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

4
отвечен Irshad Khan 2023-03-29 21:00

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

nohup() {
    setsid "$@"
}

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

nohup() {
    "$@" & disown
}

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

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

3
отвечен grawity 2023-03-29 23:17

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх