Під час цього питання я хотів би знати, куди 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її відредагували та закрили термінал, в якому вона працює. Це пояснюється в цьому питанні: Віддалений нохуп після факту з tcsh ( завдяки шарлатанському кіхоту).