Tmux
在最後一個會話存在後,如何讓 tmux 伺服器繼續執行?
我正在嘗試將 tmux 作為 systemd 使用者服務執行
~/.config/systemd/user/tmux.service
。當我啟動服務systemd --user start tmux
然後從終端執行 tmux 時,它似乎正確連接到服務的 tmux 伺服器。但是,當我關閉最後一個會話時,tmux 服務會停止。這是一個問題,因為我希望 tmux 伺服器對 SSH 客戶端保持可用。如何防止 tmux 伺服器在最後一個會話關閉後自動停止?
[Service] Type=forking ExecStart=tmux new-session -s %u -d ExecStop=tmux kill-session -t %u [Install] WantedBy=default.target
解決方案:
[Service] Type=forking ExecStart=tmux new -s dummy -d ExecStop=-tmux kill-server Restart=on-success [Install] WantedBy=default.target
tmux 有一個選項
exit-unattached
,如果啟用,伺服器將在沒有附加客戶端時退出,您可以使用禁用set-option -s exit-unattached off
在你的
~/.tmux.conf
,但這似乎對我沒有任何影響(打開或關閉),或者我誤解了它的含義。您可以通過添加以下行來要求 systemd 在退出時重新啟動您的服務
Restart=on-success
您還需要編輯
ExecStop
命令前綴-
,以便kill-session
在重新啟動時忽略命令失敗(因為屆時伺服器不再執行)。ExecStop=-/usr/bin/tmux kill-session -t %u