我想在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"
以这种方式运行,当我取消在窗格(窗口)中运行的命令时,我立即关闭它。如何避免这种行为?
答案 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,因为你正在用新的命令立即替换旧命令。)