【问题标题】:Nice command in .sh script for Cron Jobs用于 Cron 作业的 .sh 脚本中的好命令
【发布时间】:2012-12-31 13:10:45
【问题描述】:

我有这个需要在共享虚拟主机上运行的 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 或网络服务器的解决方案,那也很好。

【问题讨论】:

    标签: php apache bash cron nice


    【解决方案1】:

    跳过shell脚本并使用

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

    nice and\or php 路径可能需要也可能不需要

    【讨论】:

    • 我也希望在脚本中添加额外的命令。在运行任何 php 之前,我必须再运行几个 php 脚本并清空一些 sql 表。
    【解决方案2】:

    很抱歉,我在两个地方问了这个问题,因为我以为我没有得到回应。 我向 Superuser 提问,得到了符合我需求的答案。

    @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

    我添加了更多命令来运行具有相同良好属性的其他 php 脚本。他们都工作得很好。

    感谢大家的投入

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2017-10-26
        • 2021-04-29
        • 2012-05-08
        • 2012-06-29
        • 2021-12-10
        • 1970-01-01
        • 2015-03-07
        • 1970-01-01
        • 2018-05-20
        相关资源
        最近更新 更多