Я использую KDE Neon, который является Ubuntu 18.04 Bionic (LTS) с последними пакетами KDE для настольных ПК.
После перехода на эту версию с Xenial я утратил способность процессов переживать разрывы сеансов SSH ... в частности, nohup, tmux, screen, byobu и все их дети убиваются при отключении.
Вот простой тест, чтобы продемонстрировать проблему
# connect over ssh
cd /tmp
nohup watch date &
ps -ef | grep watch
# disconnect and reconnect
ps -ef | grep watch # process is gone
Я попытался вернуть tmux и byobu к более старым версиям, прежде чем обнаружил nohup. Это наводит меня на мысль, что это либо SSHd config, либо systemd.
Очевидно, systemd решил изменить свое поведение по умолчанию, чтобы обнулить все пользовательские процессы, когда пользователь отключается некоторое время назад. Я попытался восстановить поведение, отредактировав /etc/systemd/logind.conf и установив KillUserProcesses = no, а затем перезагрузившись (перезапуск службы systemd-logind не работал). Это не сработало ... Я в своем уме.
Помогите!
Вы хотите использовать setsid
команда для создания этого лидером сессии.
nohup
означает, "нет зависают", который по большей части просто разъединяет различные стандартные потоки ввода/вывода, но тот процесс все еще "принадлежит" процессу удара, который в свою очередь принадлежит процессу SSH. Когда Вы разъединяетесь от SSH, все те дочерние процессы идут с ним.
При помощи setsid
Вы повторно порождаете процесс за пределами объема SSH.
У меня только что была точно та же проблема, по совпадению также с Ubuntu 18.04 с пакетами KDE Neon, установленными постфактум.
Оказывается, systemd завершает все ваши пользовательские процессы по завершении сеанса, например, когда вы завершаете вход в систему SSH, потому что думаете, что просто собираетесь повторно подключиться позже с помощью tmux . ;)
Чтобы исправить, выполните следующие действия:
Внесите следующие изменения в /etc/systemd/logind.conf
:
KillUserProcesses=no
KillExcludeUsers=root YOUR_USER_NAME
и перезапустите systemd-logind
с помощью:
sudo systemctl перезапустить systemd-logind
Включите задержку для вашей учетной записи с помощью:
loginctl enable-linger YOU_USER_NAME
Сначала у меня были включены только затяжные процессы и KillUserProcesses=no
, но мой tmux все равно был уничтожен.Только после того, как я изменил KillExcludeUsers
(спасибо https://askubuntu.com/a/1097134/59971 ), я смог спокойно продолжить обучение нейронной сети.