web-dev-qa-db-ja.com

Debianで特定の時間にcronジョブが実行されないようにするにはどうすればよいですか? (「ゲーム」/「パフォーマンスモード」)

ログチェックをcronジョブとして設定しているようで、実行中は常にgrep by logcheckがCPUの約¼を消費します。

現在、特定の時間帯にCPUの全能力が必要であり、特定の/プロセスを除いて、システムが使用するリソースをできるだけ少なくするようにしています(これは何らかの方法で指定することができます)。

KDEマシンを搭載したDebian 9.1を、ユーザーが明示的に開始していないプロセスがシステムリソースを大量に消費するのを防ぎ、バックグラウンドプロセスの負荷を下げ、最も重要な何らかのパフォーマンスモード(または「ゲームモード」)に設定することは可能ですか? :そのモードが再び停止するまでcronジョブを遅らせますか?

12
mYnDstrEAm

「特定の時間」が固定されていない場合、システムが「パフォーマンスモード」に入ったり出たりするときにi.e。を手動で指定したい場合は、単純にcronを停止および開始できます。

Sudo systemctl stop cron

cronジョブが実行されないようにします。

Sudo systemctl start cron

それらを再度有効にします。

anacronの代わりにcronをチェックアウトすることもできます。用途に合わせてグローバルに調整する方が簡単な場合があります。

18
Stephen Kitt

2つのアプローチを検討します

  1. スケジュールは変更せずに、すべてのcronジョブを Nice で、場合によっては ionice でも実行します。

    0 * * * *    root    ionice -c3 Nice /some/command and parameters
    
  2. 特定の時間帯のcronジョブを禁止します。フラグファイルを作成(または削除)できるすべてのユーザーがこのアプローチを制御できることを覚えておいてください。ゲームの起動スクリプトにtouchコマンドとrmコマンドを追加することで、ゲームモードを設定したい場合はオンデマンドを使用することでうまくいく場合があります。 (/tmpではなく/var/runを使用する必要があるかもしれませんが、それなら簡単にすべてのユーザーが利用できます。)

    0 18 * * *      root    touch /var/run/no_cron
    0 19 * * *      root    rm -f /var/run/no_cron
    
    0 * * * *       root    test ! -f /var/run/no_cron && /some/command...
    

いったんセットアップすると、どちらのアプローチもrootアクセスを必要としません。さらに、この制御の対象となるジョブとそうでないジョブを事前に決定できます。

12
roaima