当我退出它在里面运行的命令时,如何创建不会被销毁的窗格?

时间:2014-02-26 13:52:51

标签: shell command tmux pane

我想在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"

以这种方式运行,当我取消在窗格(窗口)中运行的命令时,我立即关闭它。如何避免这种行为?

1 个答案:

答案 0 :(得分:6)

使用remain-on-exit窗口选项标记窗口(及其包含的所有窗格)在其运行的命令退出后保留。

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 case,因为你正在用新的命令立即替换旧命令。)