Выбор ответа Middle Процессы и сигналы обновлено
Почему фоновая задача умерла после выхода из SSH
Вопрос
Запустили ./import.sh & в SSH-сессии и закрыли терминал. Утром процесса нет. Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: При закрытии терминала процессы сессии получили SIGHUP. При потере управляющего терминала ядро и shell рассылают SIGHUP задачам сессии, а действие по умолчанию для SIGHUP это завершение.
Варианты ответа
- Фоновые процессы ядро завершает не позже чем через 8 часов
- Процесс превысил лимит памяти сессии и был убит ночью
- При закрытии терминала процессы сессии получили
SIGHUPправильный ответ - SSH при выходе убивает все процессы сессии через
SIGKILL
Разбор
При потере управляющего терминала ядро и shell рассылают SIGHUP задачам сессии, а действие по умолчанию для SIGHUP это завершение. Помогают nohup, disown, setsid, tmux или, для постоянных задач, юнит systemd. SSH не шлёт SIGKILL, ограничения на 8 часов не существует, память здесь ни при чём.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.