2016-08-22 73 views
1

我有一个可执行文件,它执行从接口FPGA的数据采集并以特定格式存储它。偶尔,随机,采集代码停止援引接收错误。但是,重新运行可执行的作品。作为看门狗的Shell脚本

因此,一个临时安排是在shell脚本中运行可执行文件。相应的过程需要被监控。如果采集停止(并且过程结束),脚本应该重新运行可执行文件。

任何提示如何去呢?

回答

1

通过你的描述,这听起来像你只是想要一个连续调用收集器的无限循环。

while true; do 
    collector 
done >output 

重定向环路外的输出更高效(你只打开一次写入文件),以及更简单的(你不必在循环中找出是否覆盖或追加)。如果你的收集器没有产生标准输出的数据,那当然,这个细节是没有意义的。

0

grep for the shell script wrapper中的可执行进程。如果未找到PID,请重新启动。您需要将Shell包装程序安排为cron作业。

+0

而不是cron工作,我可以使用,而真实;并在循环中添加睡眠? – user3440489

+0

你可以,但是如果unix进程以某种方式死亡,它会非常混乱。克朗人定期关注工作并让他们继续工作。 – xCodeZone

+0

你可以合并;一个简单的无限循环和一个cron作业,如果它被杀死的话,这个循环会将循环备份起来。不过,它可能是不必要的复杂,并且仍然没有保证(如果你的系统负载非常重,'crond'也可能被杀掉!) – tripleee