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