解決systemd下tmux和screen沒法會話保持後臺執行命令

簡介

  目前大多數Linux發行版已經使用systemd啓動代替之前的init啓動,在systemd下,默認會話結束時,會殺死的會話中的全部進程。html

  所以當遠程ssh時exitscreentmux的會話窗口也被關閉了。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
    複製代碼

相關資料

我的博客 -> 原文地址

相關文章
相關標籤/搜索