简介
目前大多数Linux发行版已经使用systemd启动代替以前的init启动,在systemd下,默认会话结束时,会杀死的会话中的所有进程。
因此当远程ssh时exit后screen和tmux的会话窗口也被关闭了。
原因
在systemd启动下,由loginctl控制着用户登录的一些配置选项。例如用户 log out 时默认杀死用户所有进程。
解决方法:
-
方法一:修改
loginctl默认配置#/etc/systemd/logind.conf KillUserProcesses=no然后重启服务即可
sudo systemctl restart systemd-logind -
方法二:运行命令在当前用户session外,使用
systemd-run命令:systemd-run --user --scope tmuxsystemd-run用于后台执行命令,将进程从当前用户归属于systemd用户 -
方法三:将命令写成一个服务,通过服务启动
例如将scrapyd命令作为服务单元启动
#/usr/lib/systemd/system/scrapyd.service [Unit] Description=run the Scrapyd server [Service] ExecStart=/home/pi/.virtualenvs/python3/bin/scrapyd Type=simple KillMode=process [Install] WantedBy=multi-user.target而后执行命令即可:
sudo systemctl daemon-reload sudo systemctl start scrapyd
相关资料
个人博客 -> 原文地址