子进程pid超时

子进程pid超时

我在 bash 脚本中使用该timeout实用程序在给定时间内运行命令(例如timeout -s SIGINT 500s ./my_script)。我想监视进程myscript以查看它使用了多少CPU/内存(例如使用htop -p <pid>命令)。

我知道当一个进程在后台启动时(使用&),我可以通过检索变量以编程方式获取其 pid $!。问题是超时会产生一个新的子进程,并且使用$!变量我得到“超时的 pid”,而不是 myscript 的 pid。

如何检索超时产生的子进程的 pid?

答案1

timeout一个启动脚本的机会,然后询问ps其父进程是timeout

timeout -s SIGINT 500s ./my_script &
bgpid=$!
sleep 1
p=$(ps -o pid= --ppid "$bgpid")
echo The pid you want is: "$p"

相关内容