如何连续运行 bash 脚本检查值是否已更改?

如何连续运行 bash 脚本检查值是否已更改?

我有一个 PHP 脚本getAnalytics.php,调用该脚本时会返回一个特定的整数值。我希望能够调用getAnalytics.php一个 bash 脚本,该脚本每 30 秒连续运行一次检查 PHP 脚本,以查看返回的值是否已更改。

我该怎么做呢?或者您会推荐一种不同的方法吗?

答案1

如果你没有更好的指示(例如查看一些日志文件)来获取可能更改的通知,只需在 bash 中无限循环:

res=
while [ 1 ] ; do
   old_result=$res
   res=$(/path/to/getAnalytics.php)
   echo "result: $res"
   if [ "$old_result" != "$res" ]; then
     echo "result has changed"
   fi
   sleep 30
done

您需要Ctrl+C才能退出。如果您想在脚本打印的特定值(例如 42)上退出,请res在开始时设置为某个虚拟值,然后测试[ "$res" != "42" ]

答案2

如果您可以将运行之间的要求放宽到一分钟,则可以通过 cron 条目轻松完成此操作。此过程的优点是程序不会简单地闲置(并可能死掉)导致您错过某些数据或窗口。在重新启动之间也不需要特殊的步骤来启动它。

相关内容