Під час цього питання я хотів би знати, куди 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 ( завдяки шарлатанському кіхоту).