从 bash 运行同一个 php 脚本的多个实例

从 bash 运行同一个 php 脚本的多个实例

我正在运行一个 cron 作业,每分钟多次执行一个 php 文件,就像这样

*  *  *  *  * /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 10; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 20; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 30; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 40; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
*  *  *  *  * sleep 50; /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null

执行myFile.php正常,但是当我计算正在运行的进程数时,
ps -ef | grep php | wc -l
它加起来并且 CPU 使用率达到 100%!

我应该运行单个 bash 文件并从该 bash 文件内部交错运行多个 php 文件吗?

如果是的话我该如何编写 bash 脚本?

#!/bin/bash
????
????
????

编辑:我想提一下,该文件的执行应该在前一次执行完成后进行。

此外,正如 krisFR 指出的那样,cron 任务并不是强制性的

答案1

我不知道你的脚本实际上在做什么,也许它需要大量的服务器资源,而且下一个脚本肯定会在前一个脚本完成之前启动。这是你想要的吗?我猜“不”。

我建议运行一个Bash脚本,例如:

#!/bin/bash
while true; do
   /usr/bin/php /var/www/html/myFile.php >> /var/www/html/cronlog 2> /dev/null
   sleep 10
done

假设您将上述代码放在文件中,/home/me/myscript.sh您可以使用以下命令在后台运行它:

nohup /home/me/myscript.sh &

测试并检查它是否满足您的需要。

相关内容