shell - 确定在 Linux 中使用给定可执行文件启动的所有进程
问题描述
我需要收集\记录在执行 Perl 脚本期间用于在我的机器上启动进程的所有命令行,该脚本恰好是测试自动化脚本。这个 Perl 脚本使用各种命令行多次启动有问题的可执行文件(MySQL),我想检查这些调用的所有命令行。这样做的正确方法是什么?我看到的一种可能性是在 shell 脚本的循环中运行类似“ps -aux | grep mysqld | grep -v grep”的东西,并将结果捕获到文件中,但是我必须对此进行一些后期处理并删除重复项等等,由于时间问题,我可能会错过一些进程命令行。有没有更好的方法来实现这一点。
解决方案
处理 ps 输出总是会错过一些进程。它只会捕获当前存在的那些。最好的方法是修改 Perl 脚本以在每个命令执行之前或之后记录它。
如果这不是一个选项,您可以通过运行以下命令获取 perl 脚本的子 pid:
pgrep -P $pid -a
-a
给出完整的进程命令。$pid
是 perl 脚本的 pid。然后只处理那些。
推荐阅读
- ios - 没有要编译的架构 (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=armv7 arm64) Xcode 12
- c++ - 变量 'MySet::group' 未初始化。总是初始化一个成员变量(type.6)
- node.js - paytm付款成功后,我无法回到我的角度应用程序
- javascript - 带有 Express 的 Node.js:req.body 未定义
- asp.net - 在 web.config 提供程序连接字符串中转义双引号
- python - 基于索引和另外 2 列的列的平均值
- d3.js - 在 svelte 上使用 Leaflet-d3
- sql-server - 如何使用 sql server 2016 比较基于两个关键列的单个列的数据?
- utf-8 - WSO2 MI 正在替换土耳其字符,即使请求 json 中的 charset=UTF-8
- python - python conda - 创建了一个新环境,但它仍然在基础环境中使用 python