目前大多数Linux发行版已经使用systemd
启动代替之前的init
启动,在systemd
下,默认会话结束时,会杀死的会话中的全部进程。html
所以当远程ssh时exit
后screen
和tmux
的会话窗口也被关闭了。python
在systemd启动下,由loginctl
控制着用户登陆的一些配置选项。例如用户 log out 时默认杀死用户全部进程。ubuntu
方法一:修改loginctl
默认配置segmentfault
#/etc/systemd/logind.conf
KillUserProcesses=no
复制代码
而后重启服务便可bash
sudo systemctl restart systemd-logind
复制代码
方法二:运行命令在当前用户session外,使用systemd-run
命令:session
systemd-run --user --scope tmux
复制代码
systemd-run
用于后台执行命令,将进程从当前用户归属于systemd
用户ssh
方法三:将命令写成一个服务,经过服务启动scrapy
例如将scrapyd命令做为服务单元启动spa
#/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
复制代码
然后执行命令便可:rest
sudo systemctl daemon-reload
sudo systemctl start scrapyd
复制代码
我的博客 -> 原文地址