运行 bash 循环

运行 bash 循环

我在 bash 脚本中创建了一个 while 循环来运行几个 PHP 命令。我之所以创建 while 循环是因为我无法使用 cronjobs(我不想在另一个脚本仍在运行时创建新的 bash 脚本实例)。

以前,我使用屏幕运行命令,但似乎最终我的资源都被这个过程耗尽了。

所以我的问题是;运行 bash 脚本的更好替代方法是什么?

脚本类似于:

#!/bin/bash
echo "Starting daemon.."

while true; do
   echo "Running runJobs.."
   cd /var/www/wiki && nice -n 10 /usr/bin/php maintainAll.php maintainwiki runJobs >> /var/log/runJobs.log
   echo "Sleeping 60 seconds.."
   sleep 60
done

答案1

一个很好的选择是让 PHP 进行循环,而不是对 PHP 进行循环调用。

真的,一旦你有了这个,你所需要做的就是让 Ubuntu 以某种形式保留脚本的副本。这可以通过一个非常简单的 Upstart 脚本来实现。你可以将其放入/etc/init/myphpscript.conf

description "My PHP script"

start on startup
stop on shutdown
respawn

exec sudo -u www-data -- php -f /path/to/script.php

请注意,一旦 PHP 退出,Upstart 就会抽出另一个副本,所以如果您不在 PHP 中放置睡眠状态,您将陷入非常快速、可能非常昂贵的(我不知道您的代码做了什么)循环。

相关内容