私が管理するさまざまなシステムでは、一般的に使用される/etc/cron.{hourly,daily,weekly}
レイアウトを介して実行されるcronスクリプトがあります。私が知りたいのは、一般的な「このスクリプトを無効にする」機能があるかどうかです。
明らかに、特定のディレクトリから何かを削除するだけではそれは無効になりますが、もっと永続的な解決策を探しています。 /etc/cron.daily/slocate
を削除すると、私のホームマシン(updatedb
を使用しない場所)で毎晩slocate
を無効にすることができますが、次回slocateパッケージをアップグレードすると、きっとそれが確実になります再現します。
私が最も興味を持つ2つのディストリビューションはGentooとOpenSUSEですが、広く実装されているメカニズムがあることを期待しています。私が持っている両方のディストリビューションはvixie-cronを使用しています(重要かどうかはわかりません)。
chmod -x scriptname
スクリプトを無効にしますが、ファイルはそのままにしておきます。
run-partsは、名前にドットが含まれるジョブを実行しないため、
mv /etc/cron.d/job /etc/cron.d/job.disabled
トリックを行います。
通常、cron.daily
は/etc/crontab
を介して呼び出されます。
run-parts --report /etc/cron.daily
man run-parts
はオプションを提供します。
run-parts --test /etc/cron.daily
は、実行されずに実行されたジョブを示します。
サブディレクトリを「無効」にして、ジョブをそこに移動することを好みます。
いずれの場合でも、パッケージを更新すると、ジョブが再度実行されるか、削除された「x」ビットが復元される可能性があります
Slocateパッケージは、使用しない場合は削除できます。
/etc/cron.daily et。 al。スクリプトは、run-partsと呼ばれるスクリプトによって実行されます。そのスクリプトは異なります。たとえば、上記の--testスイッチは、私が現在使用しているマシンにはありません。
Run-partsはbashスクリプトです。これは、引数として指定されたディレクトリ内のすべてのスクリプトを実行するための一般的に役立つツールです。通常は/ usr/bin/run-partsにあります。
実行するものを決定するためのロジックのもつれがあります。そのコードはあなたの質問への答えを保持しますが、それも異なります。安全のためにコードを読む必要があります。
私が見ているバージョンでは、ディレクトリ<foo>で作業しているときに<foo> /jobs.denyをチェックするロジックがあります。それが存在する場合、そのファイルに記述されているスクリプトを1行で実行することは拒否されます。あなたがこの機能を持っていると仮定すると、インストールするパッケージがインストールまたはアップグレードされても機能し続けるので、それは素晴らしいです。
Cfengine( https://cfengine.com/ )を使用する場合は、無効にしてこれを行うことができます。ホストのグループのpromiseファイルを書き込むだけで、次のcfagentの実行時にそれ自体が適用されます。人形やシェフなどを使ってこれを行うのも非常に簡単です。
RHELおよび派生物(crontabs
パッケージを提供する)を扱う場合、jobs.deny
ファイルにジョブの名前を入れることにより、ジョブを明示的に無効にすることができます。
crontabs/run-parts man page から:
他の許可/拒否構成ファイルと同様に機能するファイルjobs.allowまたはjobs.denyを作成することにより、ファイルの実行を許可または拒否できます。ファイルは指定されたディレクトリに作成する必要があります。
例/etc/cron.daily/jobs.denyには、たとえばこのスクリプトの実行を禁止する0logwatchを含めることができます。