shell命令的调用堆栈

shell命令的调用堆栈

当我连续发出创建新外壳的多个命令时,例如

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

(在您的情况下使用screensudosumc)。

答案2

你可以试试

ps -t $(tty)

在哪里

  • tty将返回您当前的 tty (我假设您处于交互式会话中)。
  • $( tty)将在命令行中带来输出。
  • ps -t将列出与该相关的所有进程tty。

您可以添加ps您喜欢的标志。 (例如)

ps -t $(tty) -o stime,etime,args

相关内容