Добре і фони, за винятком програм, які повертаються, які потребують взаємодії консолі пізніше (наприклад, "влучне оновлення &", яке врешті-решт переходить у стан STOP, оскільки воно хоче сповістити користувача на запитання "справді насправді?" Набагато пізніше .... коли вже ніхто не дивиться).
Щоб підключити цю дірку і повідомити про процес, термінал дійсно ніколи не стане доступним для нього, я додаю <& - до деяких моїх команд, повністю від'єднуючи їх від активного терміналу, кажучи, що STDIN вже не можливий. Переконайтесь, що / bin / bash - це ваша оболонка, якщо ви її використовуєте. Сценарій здійснюватиме реєстрацію будь-яких помилок, пов’язаних із відсутністю псевдотерміналу, на якому можна подавати будь-яке підказку.
Наприклад:
`./runme.sh &> runme.log <&- & disown`
це мій остаточний спосіб відмежуватися від поточного термінального сеансу. І STDOUT, і STDERR потрапляють до runme.log, неважливо, чи швидше закінчиться ваша консоль або оболонка чи ви вийдете / su в інший обліковий запис (немає термінального сміття з runme), а завдяки відмови навіть від батька-батька PID-зв’язок видалено.
ОНОВЛЕННЯ: навіть з цим у мене виникли проблеми з семафором, асоціюючи його з іменем початкового батька, тому тепер рекомендую замість цього:
at now <<< "(cmd1; cmd2; etc.) &> logfile.log"
Звичайно, видаліть &>, якщо ви хочете отримати електронною поштою вихід з CRON, або перенаправіть все це на / dev / null замість файлу.
screen
) може, крім іншого, використовуватися для "обгортання" триваліших процесів. Ви можете від'єднатись від нього, повернувшись до оболонки, після чого повторно приєднайте та побачите вихід із запущеного процесу. Повторне приєднання може бути здійснено навіть з іншого терміналу, SSH тощо. Можуть бути й інші програми, які дозволяють вам робити подібні речі.