当前位置: 首页 > 面试题库 >

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

邓光赫
2023-03-14
问题内容

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

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


问题答案:

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

ps -ef >/tmp/bash_stack_trace.$$

在其中发生问题的地方。

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

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

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

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

rm /tmp/bash_stack_trace.*


 类似资料:
  • 问题内容: 为了强制执行max_execution_time限制,PHP必须跟踪特定脚本使用的CPU时间。 有没有办法在脚本中访问此内容?我想在测试中包含一些日志记录,以了解实际PHP中的CPU消耗了多少(脚本坐着并等待数据库时,时间没有增加)。 我正在使用Linux机器。 问题答案: 在unixoid系统上(以及在Windows上的php 7+中),您可以使用getrusage,例如: 请注意,

  • 我试图从一个简单的BASH脚本执行一个简单的PHP脚本。这个网站上的答案不能回答我的问题。 这是我的BASH脚本 这是我的PHP脚本 从命令行运行BASH脚本时,出现以下错误。 我试过键入/usr/bin/php-q/home/username/subfolder/durable2。这很好。它跑起来了

  • 问题内容: 假设我在网址“ http://mywebsite.com/myscript.txt”处有一个包含脚本的文件: 而且我想先运行该脚本而不先将其保存到文件中。我该怎么做呢? 现在,我已经看到了语法: 但这似乎不像我保存到文件然后执行时那样。例如,readline不起作用,而输出仅为: 同样,我尝试过: 具有相同的结果。 最初我有一个解决方案,例如: 但这似乎草率,我想要一个更优雅的解决方案

  • 问题内容: 我试图找出一种从Golang执行脚本(.sh)文件的方法。我发现了几种简单的执行命令的方法(例如os / exec),但是我要执行的是执行整个sh文件(该文件设置了变量等)。 为此,使用标准的os / exec方法似乎并不简单:尝试输入“ ./script.sh”并将脚本内容加载到字符串中都不能用作exec函数的参数。 例如,这是我要从Go执行的sh文件: 从Go程序中: 其中mong

  • 问题内容: 跟踪任务在gradle构建脚本中花费了多长时间的最优雅的方法是什么?在最佳情况下,将时间直接记录在任务名称的同一行或下一行 问题答案: 最干净的解决方案是实现TaskExecutionListener(我确定您可以处理该部分)并向进行注册。

  • 1. 单步执行和跟踪函数调用 看下面的程序: 例 10.1. 函数调试实例 #include <stdio.h> int add_range(int low, int high) { int i, sum; for (i = low; i <= high; i++) sum = sum + i; return sum; } int main(void) { int result[1