在tmux窗格中运行命令

3

有没有一种方法可以显示正在 tmux 窗格中运行的命令?

我尝试过 'history',但它似乎不会显示我在 tmux 中执行的命令。

我还尝试过 'ps -ef',但它不会显示像 "./a.sh ; ./b.sh" 这样的完整命令。


./a.sh; ./b.sh 不是一个命令;它只是一条命令,只有读取它的 shell 才能理解其含义。tmux 只知道在窗格中当前运行的命令,可以是 a.sh 或者 b.sh - undefined
3个回答

3

我在网上找到了几个包括ps ... | tail -1的答案。不幸的是,这些方法并不总是有效,因为有时命令的顺序会被交换,例如对于两个单独的面板,我得到:

$ ps -t /dev/pts/12 -o args=
-bash
mpv some_movie.mp4
$ ps -t /dev/pts/10 -o args=
micro some_file.txt
-bash

我最初希望只有一行输出结果,以便在状态栏中显示,但我最终使用的是通过run-shell命令执行ps --forest。它似乎总是可靠地显示正确的顺序,并提供有关嵌套命令运行的更多信息(例如通过bash脚本)。它的输出如下:

$ ps --forest -o args -g $$
COMMAND
-bash
 \_ ps --forest -o args -g 1695

解决方案

在我的 .tmux.conf 文件中,我写了以下内容:

bind '`' run-shell 'ps --forest -o pid,args -g #{pane_pid}'

它会使用ps --forest命令的输出替换您窗格的内容。一旦您输入esc^Cps输出将消失,您的窗格将返回到以前的状态 :) 效果如下:

running nested scripts 运行script.sh,它调用other-script.sh,然后休眠30秒钟。

viewing process tree 通过按键绑定查看窗格进程树


0

-1
尝试在配置文件中将pane-border-status设置为bottomtop,可以通过tmux命令提示符或运行tmux set pane-border-status bottom来实现。这样,窗格周围将出现边框,并且当前进程的信息会显示在类似于常规终端窗口标题栏的位置。
我怀疑该命令未被写入history文件,因为带有卡住/长时间运行作业的shell尚未完成。
您可以尝试使用pstree -U以查看进程及其父/子关系树。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接