【发布时间】:2015-09-10 15:20:31
【问题描述】:
假设我在 bash 中有这个伪代码
#!/bin/bash
things
for i in {1..3}
do
nohup someScript[i] &
done
wait
for i in {4..6}
do
nohup someScript[i] &
done
wait
otherThings
说这个 someScript[i] 有时会挂起。
有没有办法获取进程 ID(使用 $!) 并定期检查进程是否花费了超过指定的时间,之后我想用 kill -9 杀死挂起的进程?
【问题讨论】:
-
您可以为您触发的每个进程创建一个看门狗。要实现看门狗进程,您可以使用
time -o run.${!}.time nohup someScript[i]运行主进程,并在启动主进程后将它们作为后台进程运行。看门狗应该评估time命令存储的统计信息。另一种可能更简单的方法是在您启动脚本进程时将时间戳存储在一个数组中,并检查后台进程数组和(当前)时间戳数组的每个映射以及在等待命令之前启动的免费进程。
标签: bash process wait kill pid