如何让tmux会话在脚本执行完成后保持不关闭
这个问题我之前也碰到过!tmux默认在会话里的主命令结束后就会自动关闭会话,确实很头疼,尤其是想事后看日志的时候。给你几个实用的解决办法:
修改启动命令,让脚本结束后保留shell
你可以在启动tmux的时候,把脚本命令和一个交互式shell串联起来,这样脚本跑完后会自动进入shell,会话就不会关闭了。调整后的systemd命令应该是:systemd-run --scope --user tmux new-session -s mysession 'python your_script.py; exec bash'
这里的exec bash会替换当前进程为bash,保持会话活跃。如果想用zsh或者其他shell,换成对应的命令就行。全局配置tmux,让所有窗口退出后保留
如果你希望所有tmux窗口在命令结束后都不自动关闭,可以修改你的tmux配置文件(一般是~/.tmux.conf),添加一行:set-option -g remain-on-exit on
保存后重启tmux或者在现有会话里按Ctrl+b :输入source ~/.tmux.conf生效。这样不管你在窗口里跑什么命令,结束后窗口都会保留,你随时可以attach回去看日志,甚至还能在这个窗口里重新执行命令。针对单个会话临时设置
如果你不想全局修改,只想给当前这个会话设置,可以在启动tmux的时候加上选项:systemd-run --scope --user tmux new-session -o remain-on-exit on -s mysession 'python your_script.py'
或者如果已经启动了会话,脚本还在运行,你可以按Ctrl+b :打开tmux命令行,输入:set-window-option remain-on-exit on
回车确认,这样当前窗口在脚本结束后就不会关闭了。
备注:内容来源于stack exchange,提问作者sirjay

