脚本行为异常。我只需要通过修改行为异常的脚本就可以知道谁调用了该脚本,谁调用了调用脚本,等等。
这类似于堆栈跟踪,但是我对单个bash脚本中的函数调用的调用堆栈 不 感兴趣。相反,我需要由脚本启动的已执行程序/脚本链。
因为您说可以编辑脚本本身,所以只需输入:
ps -ef >/tmp/bash_stack_trace.$$
在其中发生问题的地方。
这将在您的tmp目录中创建许多文件,这些文件会在发生时显示整个进程列表。
tmp
然后,您可以通过检查此输出来找出哪个进程调用了另一个进程。awk由于输出是常规的,因此可以手动完成,也可以使用诸如之类的方法自动完成- 您只需使用这些PID和PPID列即可计算出您感兴趣的所有流程之间的关系。
awk
PID
PPID
您需要密切注意文件,因为每个进程只有一个文件,因此可能需要对其进行管理。由于只有在调试期间才能执行此操作,因此大多数情况下该行会被注释掉(以开头#),因此不会创建文件。
#
要清理它们,您只需执行以下操作:
rm /tmp/bash_stack_trace.*