Cron Jobs的.sh脚本中的Nice命令

时间:2013-01-17 03:04:39

标签: php apache bash cron nice

我有这个PHP脚本,我需要在共享的虚拟主机上运行。 我创建了一个执行sh脚本的cron作业。 cron的命令是:

/bin/sh /home/user/script.sh

所以我假设它是Bourne Shell(或兼容的东西)。脚本本身是:

#!/bin/sh
cd /home/user/public_html/folder/
#updating DB
php -q ./run_interactive_job.php batch_control_files/updateDB
echo Updated DB results

我的问题是
我可以在php命令中添加 Nice 优先级吗?或者我是否需要在cron命令中将其添加到脚本中。哪一个更有可能发挥作用?

nice 10 php -q ./run_interactive_job.php batch_control_files/updateDB

以较低优先级运行是否会成功。

PS:基本上,此脚本在我通过浏览器运行之前已经使服务器超载,并且它影响了该服务器上的apache,导致我的主机阻止了该文件。我一再要求他们解锁,用不同的参数测试它。现在我试图通过cron以较低的优先级运行它,希望它不会影响apache。但我不希望它再次产生问题,因此我试图使用 NICE

如果有人有任何其他建议可以提供类似的运行php脚本的解决方案而不影响apache或网络服务器,那也很不错。

3 个答案:

答案 0 :(得分:6)

跳过shell脚本并使用

* * * * * /usr/bin/nice -n 10 /path/php -q /path/script.php

很好和\或php路径可能需要也可能不需要

答案 1 :(得分:2)

对不起,我在两个地方问了这个问题,因为我觉得我没有得到答复。 我在超级用户那里问过,我收到了一个符合我需要的答案。

@Dagon - Dagon的回答似乎也有效,当我用任何一个解决方案解决这个问题时,我会提供更新。

The same Question asked at Superuser - https://superuser.com/questions/537509 ...

更新:我使用了那里显示的批处理文件。我在批处理文件中的php之前使用了nice命令。唯一的区别是:

nice -n 10 php -q ./run_interactive_job.php batch_control_files/updateDB

我添加了更多命令来运行具有相同nice属性的其他php脚本。他们都很棒。

感谢所有人的输入

答案 2 :(得分:0)

无论哪种方式都没问题。如果将nice放在Cron作业本身,它将影响整个作业的优先级;但由于脚本只包含一个命令,其优先级设置确实有意义,所以在脚本中执行它在实践中同样有效。