我有一个可执行文件,运行时会创建子进程,然后终止。我想跟踪总执行时间,包括其所有子进程完成的时间。如果我简单地使用
time my_process
,它会立即返回父进程的执行时间。有办法解决这个问题吗?
我找到了基于此答案的解决方案。这个想法是打开一个文件,该文件将由所有子进程继承,然后等到该文件不再使用。所以,基本上我写了以下脚本(
my_script.sh
):
#!/bin/bash
foo=$(mktemp)
( flock -x 500; ./my_process; ) 500> "$foo"
flock -x 0 < "$foo"
rm "$foo"
我现在可以跑步了
time ./my_script.sh
。