解决systemd下tmux和screen无法会话保持后台执行命令

简介

  目前大多数Linux发行版已经使用systemd启动代替以前的init启动,在systemd下,默认会话结束时,会杀死的会话中的所有进程。

  因此当远程ssh时exitscreentmux的会话窗口也被关闭了。

原因

  在systemd启动下,由loginctl控制着用户登录的一些配置选项。例如用户 log out 时默认杀死用户所有进程。

解决方法:
  • 方法一:修改loginctl默认配置

    #/etc/systemd/logind.conf
    KillUserProcesses=no
    复制代码

    然后重启服务即可

    sudo systemctl restart systemd-logind
    复制代码
  • 方法二:运行命令在当前用户session外,使用systemd-run命令:

    systemd-run --user --scope tmux
    复制代码

    systemd-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
    复制代码
相关资料

个人博客 -> 原文地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值