Куда направлен ВЫКЛЮЧЕНИЕ отрекшейся программы?

11

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

Траун
источник

Ответы:

10

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

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

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

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

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

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

sleske
источник
Согласно его предыдущему вопросу, дело в том, что он закрыл этот предыдущий терминал. Как он может получить вывод, тогда?
Gnoupi
@Gnoupi: Я не думаю, что есть какой-то способ вернуть результат. По крайней мере, я никогда не слышал ни о чем.
Слеське
Спасибо за комментарий Gnoupi :-) На самом деле вывод нигде не найти. Я буду продолжать смотреть, хотя :-)
Thrawn
1
это действительно ответ: отречение ничего не меняет; вам нужно настроить любой захват или перенаправление при запуске процесса . если вам это нужно потом, GDB - ваш (единственный) друг: superuser.com/questions/50058/…
кваки-квикот
@ Quack - я бы сказал, что вопрос нуждается в рефакторинге, чтобы подчеркнуть фактический вариант использования, а не только инструмент. В текущей форме (в центре - отречение) это действительно правильный ответ. Но из контекста, с предыдущего вопроса, пользователь хочет просто восстановить выходные данные, и в этом случае ваша ссылка является ответом.
Gnoupi