当我连续发出创建新外壳的多个命令时,例如
zsh
screen
su user2
mc
sudo su
mc
是否有一个命令可以显示“调用堆栈”,即尚未完成但创建了新 shell 的命令列表?
我可能在其中发出了一些其他命令,因此 shell 历史记录不会有帮助。此外,我可能已经切换了用户和 shell,如上面的示例所示。
我知道我可以使用树视图找到此信息,htop
但我可以使用命令直接获取它吗?
答案1
您可以使用pstree
(从PS杂项) 为了这:
pstree -s $$
该-s
选项显示指定进程标识符的父进程,并且$$
是当前进程的标识符。pstree
还显示指定进程标识符的子进程,因此您最终会得到类似于
systemd───systemd───gnome-terminal-───zsh───pstree
(在您的情况下使用screen
、sudo
、su
等mc
)。
答案2
你可以试试
ps -t $(tty)
在哪里
tty
将返回您当前的 tty (我假设您处于交互式会话中)。$( tty)
将在命令行中带来输出。ps -t
将列出与该相关的所有进程tty。
您可以添加ps
您喜欢的标志。 (例如)
ps -t $(tty) -o stime,etime,args