10

В продолжение этого вопроса я хотел бы знать, куда перенаправляются STDOUT и STDERR программы, в которой я запускал disown -h .

1 ответ1

10

disown не меняет программы STDOUT/ERR. Они по-прежнему будут отправляться туда, куда вы их перенаправили (используя > и т.д.). Если вы не перенаправили их, они будут продолжать входить в терминал, с которого вы запустили программу (до тех пор, пока вы не закроете этот терминал, в этом случае они будут удалены).

Чтобы проиллюстрировать это, запустите это в терминале:

bash -c 'while true; do sleep 1; echo hi; done' &

Это будет печатать "привет" каждую секунду (и вас ужасно раздражать ;-)). Если вы disown от программы после запуска, "привет" просто продолжится. Вам нужно найти PID оболочки (используя, например, ps) и убить его, чтобы он остановился.

Редактировать:

Основываясь на комментариях, возможно, что вы действительно хотите сделать, это восстановить вывод программы после того, как вы disown нее и закрыли терминал, в котором она работала. Это объясняется в этом вопросе: после-удаленный удаленный nohup с tcsh (благодаря quackote quackote).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .