web-dev-qa-db-ja.com

特定のcronを確実に無効にします。{hourly、daily、weekly}スクリプト

私が管理するさまざまなシステムでは、一般的に使用される/etc/cron.{hourly,daily,weekly}レイアウトを介して実行されるcronスクリプトがあります。私が知りたいのは、一般的な「このスクリプトを無効にする」機能があるかどうかです。

明らかに、特定のディレクトリから何かを削除するだけではそれは無効になりますが、もっと永続的な解決策を探しています。 /etc/cron.daily/slocateを削除すると、私のホームマシン(updatedbを使用しない場所)で毎晩slocateを無効にすることができますが、次回slocateパッケージをアップグレードすると、きっとそれが確実になります再現します。

私が最も興味を持つ2つのディストリビューションはGentooとOpenSUSEですが、広く実装されているメカニズムがあることを期待しています。私が持っている両方のディストリビューションはvixie-cronを使用しています(重要かどうかはわかりません)。

26
benizi

chmod -x scriptnameスクリプトを無効にしますが、ファイルはそのままにしておきます。

run-partsは、名前にドットが含まれるジョブを実行しないため、

mv /etc/cron.d/job /etc/cron.d/job.disabled

トリックを行います。

10
chrisv

通常、cron.daily/etc/crontabを介して呼び出されます。

run-parts --report /etc/cron.daily

man run-partsはオプションを提供します。

run-parts --test /etc/cron.dailyは、実行されずに実行されたジョブを示します。

サブディレクトリを「無効」にして、ジョブをそこに移動することを好みます。

いずれの場合でも、パッケージを更新すると、ジョブが再度実行されるか、削除された「x」ビットが復元される可能性があります

9
Peter

Slocateパッケージは、使用しない場合は削除できます。

1
Maxfer

/etc/cron.daily et。 al。スクリプトは、run-partsと呼ばれるスクリプトによって実行されます。そのスクリプトは異なります。たとえば、上記の--testスイッチは、私が現在使用しているマシンにはありません。

Run-p​​artsはbashスクリプトです。これは、引数として指定されたディレクトリ内のすべてのスクリプトを実行するための一般的に役立つツールです。通常は/ usr/bin/run-partsにあります。

実行するものを決定するためのロジックのもつれがあります。そのコードはあなたの質問への答えを保持しますが、それも異なります。安全のためにコードを読む必要があります。

私が見ているバージョンでは、ディレクトリ<foo>で作業しているときに<foo> /jobs.denyをチェックするロジックがあります。それが存在する場合、そのファイルに記述されているスクリプトを1行で実行することは拒否されます。あなたがこの機能を持っていると仮定すると、インストールするパッケージがインストールまたはアップグレードされても機能し続けるので、それは素晴らしいです。

1
Ben Hyde

Cfengine( https://cfengine.com/ )を使用する場合は、無効にしてこれを行うことができます。ホストのグループのpromiseファイルを書き込むだけで、次のcfagentの実行時にそれ自体が適用されます。人形やシェフなどを使ってこれを行うのも非常に簡単です。

1
natxo asenjo

RHELおよび派生物(crontabsパッケージを提供する)を扱う場合、jobs.denyファイルにジョブの名前を入れることにより、ジョブを明示的に無効にすることができます。

crontabs/run-parts man page から:

他の許可/拒否構成ファイルと同様に機能するファイルjobs.allowまたはjobs.denyを作成することにより、ファイルの実行を許可または拒否できます。ファイルは指定されたディレクトリに作成する必要があります。

/etc/cron.daily/jobs.denyには、たとえばこのスクリプトの実行を禁止する0logwatchを含めることができます。

0
shodanshok