运行完成后终止监视命令

我正在screen窗口中使用watch来持续执行每两秒处理一次数据的PHP任务。 因此,我可以注销运行的服务器,并可以签入。 我不想中途停止任务,因为如果发生这种情况,需要手动清理,但我希望能够重新启动服务器。 有没有办法停止运行之间,并确保它还没有开始任务的另一个副本? 即像ctrl + c的东西,但如果任务在后台运行,等待。

或者,有没有其他的工作stream程可以实现这一点? 我不能使用cron作业,因为它需要每两秒运行一次,但不能同时运行。

另请注意,根据数据对象的大小,一次脚本运行需要10秒到30分钟。 (它每次运行处理一个对象。)这就是为什么在两次运行之间停止监视是不太可能的。

只要有一个bash脚本,只要文件不存在就会循环:

 while [ ! -e /tmp/stoploop ]; do some_program sleep 2 done 

然后touch /tmp/stoploop ,它将停止循环。