有没有一种方法可以显示正在 tmux 窗格中运行的命令?
我尝试过 'history',但它似乎不会显示我在 tmux 中执行的命令。
我还尝试过 'ps -ef',但它不会显示像 "./a.sh ; ./b.sh" 这样的完整命令。
有没有一种方法可以显示正在 tmux 窗格中运行的命令?
我尝试过 'history',但它似乎不会显示我在 tmux 中执行的命令。
我还尝试过 'ps -ef',但它不会显示像 "./a.sh ; ./b.sh" 这样的完整命令。
我在网上找到了几个包括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
或^C
,ps
输出将消失,您的窗格将返回到以前的状态 :) 效果如下:
tmux list-panes -t <your_pane_name> -F '#{pane_current_command}'
pane-border-status
设置为bottom
或top
,可以通过tmux命令提示符或运行tmux set pane-border-status bottom
来实现。这样,窗格周围将出现边框,并且当前进程的信息会显示在类似于常规终端窗口标题栏的位置。history
文件,因为带有卡住/长时间运行作业的shell尚未完成。pstree -U
以查看进程及其父/子关系树。
./a.sh; ./b.sh
不是一个命令;它只是一条命令行,只有读取它的 shell 才能理解其含义。tmux
只知道在窗格中当前运行的命令,可以是a.sh
或者b.sh
。 - undefined