我正在尝试将 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
,如果启用,服务器将在没有附加客户端时退出,您可以使用禁用在你的
~/.tmux.conf
,但这似乎对我没有任何影响(打开或关闭),或者我误解了它的含义。您可以通过添加以下行来要求 systemd 在退出时重新启动您的服务
您还需要编辑
ExecStop
命令前缀-
,以便kill-session
在重新启动时忽略命令失败(因为届时服务器不再运行)。到目前为止,如果您将此行添加到
.tmux.conf
文件中,则服务器在没有会话时不会关闭:set -g exit-empty off