我知道这个问题已经被问过了但是我不明白答案或者它不适用于我。
我有一个 php 脚本,我每 1 分钟使用 CPanel 调用一次来设置 Cron Job。该脚本的性质意味着它可能会超出一分钟,因此我需要知道如何在第一个脚本尚未完成时停止下一个脚本的运行。
我有一个运行 CENTOS 5.5 的 VPS,可以访问 WHM 和 CPanel。我以前从未使用过 Linux(昨天才刚刚获得服务器),所以我不知道自己在做什么,如果可能的话,我将不胜感激。如果我需要提供更多信息,请告诉我(我不知道您目前需要什么信息)。
谢谢。
答案1
答案2
使用 bash 脚本作为你的 cron 作业
定时任务
#!/bin/bash
$lockfile=/tmp/lock.file
if [ ! -e $lockfile ]; then
touch $lockfile
php /path/to/php/script.php
rm $lockfile
else
echo "script already running"
fi
答案3
文档:https://www.timkay.com/solo/
solo 是一个非常简单的脚本(10 行),可防止程序一次运行多个副本。它与 cron 一起使用可确保在前一个作业完成之前不会运行下一个作业。
例子
* * * * * solo -port=3801 ./job.pl blah blah
答案4
我很好奇,用 ps 实现某些功能是否可以解决这个问题。简单就ps -e | grep script_name.php | awk '{print $4}'
足够了吗?它肯定会告诉你脚本是否正在运行,无需事先检查是否有人终止了它。创建然后删除锁定文件如何比这更好/更快?
我不确定,只是想知道利弊。谢谢