【发布时间】:2021-03-12 03:11:04
【问题描述】:
在与 Linux 亲密接触了大约 20 年后,我几乎不敢问这样一个基本问题——当我运行一个关于工作目录和进程调用(带参数)的进程时,是否有可能记录所有发生的事情?
我有以下情况:我运行一个构建工具,该工具运行的进程运行进程,其中一个会产生错误。即使使用环境变量和通常的 --verbose 参数,我也没有获得足够的信息来手动“重播”正在发生的事情,甚至无法识别行为不端的过程。
我知道set -x,但据我所知,它只影响当前的bash/sh 实例,而我启动的进程运行一个 Python 脚本,该脚本运行一个 Python 脚本,该脚本会在某些情况下运行 configure地点,可能是make 等。至少它对我没有多大帮助。
我也知道strace 哪个might be of some help,但是有没有办法提取进程调用和工作目录?以我的经验,它产生了如此多的输出,以至于几乎找不到我必须开始 greping 的地方..
我目前梦想会是这样的
precord python3 buildme.py
这至少会给我类似的东西
python3 buildme.py --verbose (/home/me/project/root)
├── /usr/bin/mkdir build (/home/me/project/root)
├── make all (/home/me/project/root/build)
│ ├── g++ -O2 -o bla.o bla.cpp
. ├── ...
.
(请忽略上面的流程树没有任何意义的事实 - 这是关于想法的)
这个问题不仅仅是解决这个谜题,而是我正在寻找一种通用的方法。
出于显而易见的原因,我非常希望这是最早发明的 Unix 工具之一,但不知何故,直到现在我才错过它。..
【问题讨论】:
标签: linux bash process command-line-arguments