我想像这样创建窗格tmux
:
$ tmux new-session -d -s mysession "while true; do sleep 1; ls; done"
$ tmux split-window -h "while true; do sleep 1; ls -l; done"
以这种方式运行它,当我取消在窗格(窗口)中运行的命令时,我会立即关闭它。如何避免这种行为?
使用remain-on-exit
window 选项将窗口(及其包含的任何窗格)标记为在其运行的命令退出后保留。
tmux new-session -d -s mysession "while true; do sleep 1; ls; done"
tmux set-option -t mysession:0 remain-on-exit
当您终止命令时,窗口将保留,并且 [窗格] 将标记为“窗格已死”。要重新启动相同的命令,请发出respawn-window
. 要在窗口中启动新命令(例如交互式bash
会话),请发出respawn-window bash
.
respawn-window
(和respawn-pane
,我忘记了,但可以用来定位窗口中的单个窗格)也有一个-k
选项,可以用来杀死窗口中正在运行的任何内容,然后重新启动命令或启动新命令。你可以添加一些你.tmux.conf
喜欢的东西
bind-key C-c respawn-pane -k bash
然后,在任何活动窗格中,您可以键入 Control-C 以终止窗格中正在运行的任何内容并将其替换为交互式 shell(remain-on-exit
在这种情况下不需要,因为您将立即用新命令替换旧命令) .