Bash 脚本是否是 cron 作业或 C 守护进程的合理替代品

Bash 脚本是否是 cron 作业或 C 守护进程的合理替代品

我们的生产服务器遇到了 cron 问题。Cron 设置为每 5 分钟执行一次,大多数情况下都有效,但我遇到一个问题,即一项作业可能需要 6 分钟才能处理。第二个 6 分钟的作业直到 10 分钟过去后才会执行,迟早这会成为一个问题。

我已经研究过用 C 编写一个分叉守护进程来监听传入的请求 - 但这也是有问题的,因为这意味着编写另一个 API 端点并耗费开发时间。

我找到了一个看似简单的解决方案,并正在寻求批评/批评:

为了简单起见,php CLI 将根据是否有作业等待输出 1 或 0:

<?php echo "1" ?>

Bash 脚本可以检查队列中是否有任何作业:

#!/bin/bash
var=$(php -f ../readPhpOutput/testOutput.php)
if [ "$var" -eq "0" ]
    then
    echo "input zero"
else
    echo "input not zero"
fi
sleep 10

另一个 bash 脚本正在使用 nohup 运行,以确保上述脚本正在运行:

#!/bin/bash
while true
do
    value=$(ps -A | grep [r]eadPhpOutput)
    echo "grep output is: $value"
    if [ -z "$value" ]
        then /bin/bash ../readPhpOutput/./readPhpOutput.sh &
    fi
    sleep 5
done

请注意,以上只是简单、朴素的例子,用来说明我想要实现的目标。

我不想编写守护进程的主要原因是缺乏 C 语言经验、担心 fork 轰炸我的生产服务器以及不愿意在同一台服务器上安装编译器。

相关内容