web-dev-qa-db-ja.com

cronジョブ用の.shスクリプトの優れたコマンド

共有ウェブホスティングで実行する必要があるこの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に影響を与え、ホストがファイルをブロックする結果になりました。さまざまなパラメータでテストするために、ブロックを解除するよう繰り返し依頼しました。そして今、Apacheに影響を与えないことを期待して、より低い優先度でcronを介して実行しようとしています。しかし、私はそれが再び問題を引き起こしたくないので、私はニースを使おうとしています

[〜#〜] update [〜#〜]:そこに示されているようにバッチファイルを使用しました。バッチファイル内でphpの前にNiceコマンドを使用しました。唯一の違いは次のとおりです。

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

同じNiceプロパティを持つ追加のphpスクリプトを実行するコマンドを追加しました。それらはすべてうまくいきました。

入力してくれてありがとう @ sm4rk0の答えは私の問題を解決します

4
xlordvader

どちらの方法でも機能するはずですが、IMOでは、例で行ったように、スクリプトにNiceを挿入する方がクリーンです。 man Niceで確認したところ、問題の例の構文が間違っていることがわかりました。正しい構文は次のとおりです。

Nice -n 10 command

ニースの範囲は-20(最も好ましいスケジュール)から19(最も好ましくない)

また、terdonが言ったように、10がデフォルト値であるため、「-n10」は省略できます。

注:プロセスの優先度は低くなりますが、NiceではCPU負荷が少なくなることはありません。したがって、心配する理由がApacheを「チョーク」しないことだけである場合は、この方法を使用します。大丈夫ですが、ホストがCPU時間の割り当てを与えている場合、これはあまり役に立ちません。

4
sm4rk0