Це питання прийшов досить на багато ( дуже багато ), але я знаходжу відповіді в цілому неповними. Загальне питання: "Чому мою роботу не вбивають, коли я виходжу / вбиваю 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