2010-10-20 114 views
0

在脚本中,我希望以一种方式监视进程列表,为了继续执行脚本,必须启动某个进程。Shell脚本:启动监视器任务

我想出了这样的:

while ! pgrep "process_to_match" 
do 
    sleep 10 
done; 

# the rest of the script 

与该脚本的问题是,如果“process_to_match”启动不到10毫秒的“脚本的其余部分”将不被执行。

对我来说,更好的解决方案是触发“process_to_match”启动脚本的执行。

任何想法? 谢谢。

回答

2

你可以通过另一种方式检查进程是否已执行?我的意思是这个过程记录或修改任何东西?

如果没有,您可以用shell脚本替换进程(重命名进程并创建一个包含进程文件名的shell),该进程将在运行您正在等待的进程后记录一些内容。

+0

+1。我第二个这个。 “process_to_match”已经开始的某种合理可靠的通知将会优先考虑。也许它创建一个锁定文件与它的PID? – 2010-10-20 08:27:58

+0

准确地说,我不能假设任何“process_to_match”的行为。我只能依靠它的名字。 – gregseth 2010-10-20 08:52:42

+0

你可以用一个可以调用你的重命名过程的shell脚本替换这个过程吗? – 2010-10-20 09:41:23

0

您的实际需求是什么?

如果你知道你正在监视的进程的PID,那么你只需要等待它:

wait $pid 

获得这个PID是简单的:

process_to_match & pid=$! 
+0

我不知道PID,我不控制process_to_match的开始,我只是想在这个过程开始时启动一个脚本。 – gregseth 2010-10-20 08:54:49