跟踪 linux bash 调用

Vol*_*eam 5 linux bash command-line

我想知道是否有办法跟踪在 Linux 中运行命令的位置。

例如,如果我调用一个脚本,有没有办法跟踪它是从哪里调用的,比如从程序或另一个 bash 脚本启动。

Hai*_* Vu 4

如果你的脚本是用bash编写的,那么有一个名为$PPID(我猜是父进程ID的缩写)的内置变量,你可以用它来找出谁调用了你的脚本。这是一个例子:

CALLER=$(ps ax | grep "^ *$PPID" | awk '{print $NF}')
echo I was called from $CALLER
Run Code Online (Sandbox Code Playgroud)

解释:

  1. $PPID 给出父进程(调用者)的进程 ID
  2. ps命令列出所有进程
  3. grep命令查找行首包含 PPID 的行
  4. awk命令仅打印最后一列,即调用者的姓名