Отвечая на этот вопрос после продолжительной дискуссии с коллегой, мне бы очень хотелось получить разъяснение.
Я запускаю фоновый процесс, добавляя « &» в командную строку или останавливая его CTRL-Zи возобновляя в фоновом режиме с помощью « bg». Тогда я выхожу.
Что случилось?
Мы были совершенно уверены, что он должен был быть убит SIGHUP, но этого не произошло; после повторного входа в систему этот процесс был успешно запущен и pstreeпоказал, что он был «принят» init.
Это ожидаемое поведение?
Но тогда, если это так, какова nohupцель команды? Похоже, что процесс все равно не будет убит, с ним или без него ...
Редактировать 1
Еще несколько деталей:
- Команда была запущена из сеанса SSH, а не из физической консоли.
- Команда была запущена без
nohupи / или&; затем оно было приостановленоCTRL-Zи возобновлено в фоновом режимеbg. - Сеанс ssh не сбрасывался. Был фактический выход из системы (
exitкоманда " "). - Процесс был
scpоперацией копирования файла. - При повторном входе в систему
pstreeпоказано, что процесс запущен и является дочернимinit.
Редактировать 2
Чтобы сформулировать вопрос более четко: будет ли процесс, находящийся в фоновом режиме (с помощью &или bg), заставить его игнорировать SIGHUP, как это nohupделает команда?
Редактировать 3
Я попытался вручную посылая SIGHUPк scp: он вышел, так что это определенно не игнорировать сигнал.
Затем я попытался снова запустить его, поставить его в фоновом режиме и выйти из системы: он был «принят» initи продолжал работать, и я нашел его там при повторном входе.
Я сейчас озадачен. Похоже, что не SIGHUPбыло отправлено вообще при выходе из системы.
1>/dev/null 2>&1для bash и т. Д.