我watch在一个screen窗口中使用它来持续执行一个每两秒处理一次数据的 PHP 任务。因此,我可以在服务器运行的情况下注销它,并可以对其进行登记。我不想在中途停止任务,因为如果发生这种情况需要手动清理,但我希望能够重新启动服务器。有没有办法在运行之间停止监视并确保它没有启动任务的另一个副本?即像 ctrl+c 这样的东西,但如果任务在后台运行,它会等待。
或者,是否有其他一些工作流程可以实现这一点?我不能使用 cron 作业,因为它需要每两秒运行一次,但不能同时运行。
另请注意,脚本的一次运行需要 10 秒到 30 分钟,具体取决于数据对象的大小。(它每次运行处理一个对象。)这就是为什么在运行之间停止监视是非常不可能的......
只要制作一个小 bash 脚本,只要文件不存在就会循环:
while [ ! -e /tmp/stoploop ]; do
some_program
sleep 2
done
Run Code Online (Sandbox Code Playgroud)
然后touch /tmp/stoploop它将停止循环。