跟踪由Bash脚本调用的已执行程序

发布于 2021-02-01 16:50:54

脚本行为异常。我只需要通过修改行为异常的脚本就可以知道谁调用了该脚本,谁调用了调用脚本,等等。

这类似于堆栈跟踪,但是我对单个bash脚本中的函数调用的调用堆栈 感兴趣。相反,我需要由脚本启动的已执行程序/脚本链。

关注者
0
被浏览
67
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    因为您说可以编辑脚本本身,所以只需输入:

    ps -ef >/tmp/bash_stack_trace.$$
    

    在其中发生问题的地方。

    这将在您的tmp目录中创建许多文件,这些文件会在发生时显示整个进程列表。

    然后,您可以通过检查此输出来找出哪个进程调用了另一个进程。awk由于输出是常规的,因此可以手动完成,也可以使用诸如之类的方法自动完成-
    您只需使用这些PIDPPID列即可计算出您感兴趣的所有流程之间的关系。

    您需要密切注意文件,因为每个进程只有一个文件,因此可能需要对其进行管理。由于只有在调试期间才能执行此操作,因此大多数情况下该行会被注释掉(以开头#),因此不会创建文件。

    要清理它们,您只需执行以下操作:

    rm /tmp/bash_stack_trace.*
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看