Це питання прийшов досить на багато ( дуже багато ), але я знаходжу відповіді в цілому неповними. Загальне питання: "Чому мою роботу не вбивають, коли я виходжу / вбиваю ssh?", І ось що я знайшов. Перше питання: Наскільки загальною є така інформація? Наступне, здається, справедливо для сучасного Linux Linux Debian, але мені не вистачає деяких біт; а що потрібно знати іншим?
Усі дочірні процеси, фонові чи не оболонки, відкриті через ssh-з'єднання, знищуються програмою SIGHUP, коли ssh-з'єднання закрито, лише якщо встановлено
huponexit
параметр: запустіть,shopt huponexit
щоб побачити, чи це правда.Якщо
huponexit
це правда, то ви можете використовуватиnohup
абоdisown
відмежувати процес від оболонки, щоб він не загинув при виході. Або запускайте речіscreen
.Якщо
huponexit
значення false, що є типовим для принаймні деяких Linux на цих днях, фонові завдання не будуть знищені при звичайному виході.Але навіть якщо
huponexit
це неправда, тоді, якщо ssh-з'єднання буде вбито , або перепаде (відрізняється від звичайного виходу), фонові процеси все одно загинуть. Цього можна уникнутиdisown
або,nohup
як у (2).Існує деяка різниця між (a) процесами, батьківським процесом яких є термінал, і (b) процесами, у яких stdin, stdout або stderr пов'язані з терміналом . Я не знаю, що відбувається з процесами, які є (а), а не (б), або навпаки.
Заключне питання: Як я можу уникнути поведінки (3)? Іншими словами, за замовчуванням у фонових процесах Debian запускаються весело самі після виходу, але не після вбиття ssh-з'єднання. Я хотів би, щоб те ж саме відбувалося з процесами, незалежно від того, нормально було закрито з'єднання чи вбито. Або це погана ідея?
Редагувати: Ще один важливий спосіб зберегти завдання вбивства, який працює (?) В будь-якому випадку - це запускати їх через екран . Але питання стосується більше розуміння того, коли вбиваються речі, а коли їх немає: іноді люди хочуть, щоб робочі місця були вбиті під час виходу, наприклад.
Більше потоків: - Роз'яснення сигналів (зітхання), завдань та керуючого терміналу - /server/117152/do-background-process-get-a-sighup-when-logging-off - Продовжити SSH фонове завдання / завдання при закритті SSH - Чи буде завдання, поставлене у фоновому режимі, продовжувати працювати після закриття сеансу SSH? - Запобігти вже запущений фоновий процес від зупинки після закриття клієнта SSH - Як я можу почати процес над SSH таким чином, що він буде продовжувати працювати після того, як я відключаю? - Неможливо тримати віддалену роботу в ОС X - Закрити з'єднання SSH