Сохранение процесса активным после выхода из локальной (не ssh) сессии

Сохранение процесса активным после выхода из локальной (не ssh) сессии

Можно ли сохранить работу серверного процесса после выхода из системы?

Обычно я использую screen, tmux, или nohup, все они работают, когда я НЕ использую ssh, а использую машину локально. (На ней также запущен рабочий стол Gnome.)

Итак, есть ли способ запустить серверный процесс, когда вы вошли в систему локально на компьютере?

решение1

Начиная с systemd 230, KillUserProcessesвключено по умолчанию:

https://github.com/systemd/systemd/commit/97e5530cf2076a2b4fc55755917262607aaa6338

Вы можете изменить это, отредактировав /etc/systemd/logind.conf, например, установив KillUserProcesses=noглобальное отключение этого поведения или KillExcludeUsers=<your-username>исключив свое имя пользователя из этого поведения.

Или вы можете обойти это на специальной основе, запустив свой серверный процесс с помощью systemd-run --scope --user <executable>. Вы можете найти больше подробностей об этом в Example 5. Start screen as a user serviceнижней частиsystemd-запуск(1).

решение2

Я использую Debian Stretch, и KillUserProcessesон отключен по умолчанию в моей системе, но screenне переживет выход из системы. После некоторых экспериментов, следующее, похоже, сохраняет сеанс экрана запущенным после локального выхода из системы:

screen -m

или если вы хотите отсоединиться немедленно

screen -m -d

Я не уверен, почему так происходит, но мне кажется, это работает.

Редактировать:

Я провел еще несколько тестов, и, похоже, запуск экрана с командой не выживает. Я запустил 4 сеанса и отключался от них при необходимости:

Перед выходом из системы:

user    31365     1  0 16:20 ?        00:00:00 SCREEN -S mdc -m -d vim
user    31376     1  0 16:20 ?        00:00:00 SCREEN -S md -m -d
user    31391     1  0 16:20 ?        00:00:00 SCREEN -S mc -m vim
user    31399     1  0 16:21 ?        00:00:00 SCREEN -S m -m

После выхода из системы и повторного входа:

user    31376     1  0 16:20 ?        00:00:00 SCREEN -S md -m -d
user    31399     1  0 16:21 ?        00:00:00 SCREEN -S m -m

Похоже, что два экземпляра, запущенные командой, были завершены во время выхода из системы. Я присоединился к оставшимся двум сеансам и запустил VIM, затем отсоединился и снова вышел из системы. После повторного входа в систему сеансы все еще работали, и VIM все еще работал в каждом сеансе.

Связанный контент