.sh 脚本中用于 cron 作业的漂亮命令

xlo*_*der 5 apache-http-server bash cron php nice

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

/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
Run Code Online (Sandbox Code Playgroud)

我有以下问题
我可以为 php 命令添加很好的优先级吗?或者我是否需要在 cron 命令中将其添加到脚本中。

哪一个更有可能工作?

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

上述命令在以较低优先级运行时会成功吗?

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

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

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

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

感谢大家的输入@sm4rk0 答案解决了我的问题

sm4*_*rk0 5

nice两种方法都应该有效,但在我看来,就像您在示例中所做的那样,将其放入脚本中会更干净。经过检查后,man nice我发现相关示例的语法错误。正确的语法是:

nice -n 10 command
Run Code Online (Sandbox Code Playgroud)

Niceness 范围从 -20(最有利的调度)到 19(最不有利的调度)。

并且,正如 terdon 所说,10 是默认值,因此可以省略“-n 10”。

注意:虽然它会降低进程优先级,但nice不会使其减少CPU负载。所以,如果担心的唯一原因是不要“窒息” apache,那么这个方法就可以了。但如果你的主机给你一些CPU时间配额,这不会有太大帮助。