В продолжение этого вопроса я хотел бы знать, куда перенаправляются STDOUT и STDERR программы, в которой я запускал disown -h
.
1 ответ
disown
не меняет программы STDOUT/ERR. Они по-прежнему будут отправляться туда, куда вы их перенаправили (используя >
и т.д.). Если вы не перенаправили их, они будут продолжать входить в терминал, с которого вы запустили программу (до тех пор, пока вы не закроете этот терминал, в этом случае они будут удалены).
Чтобы проиллюстрировать это, запустите это в терминале:
bash -c 'while true; do sleep 1; echo hi; done' &
Это будет печатать "привет" каждую секунду (и вас ужасно раздражать ;-)). Если вы disown
от программы после запуска, "привет" просто продолжится. Вам нужно найти PID оболочки (используя, например, ps) и убить его, чтобы он остановился.
Редактировать:
Основываясь на комментариях, возможно, что вы действительно хотите сделать, это восстановить вывод программы после того, как вы disown
нее и закрыли терминал, в котором она работала. Это объясняется в этом вопросе: после-удаленный удаленный nohup с tcsh (благодаря quackote quackote).