ユーザーのcronジョブを一時的に無効にする方法は?


14

1人以上のユーザーのcronジョブを一時的に無効にするにはどうすればよいですか?特に、ユーザーのcron権限を一時停止したくありません。単にジョブを実行しないだけです。

SLES 11 SP2およびSP3システムを使用しています


コマンドの-u userスイッチを使用して、特定のユーザーに対して無効にするジョブの前にコメント文字を配置することはできませんか?crontab#
ジャニス

@Janisその後、ユーザーが既にコメントアウトしたものを追跡する必要があり、さらにユーザーは先に進んで別のものを追加できます(/etc/cron.denyに追加していません)。手作業が多すぎる:(
ディネシュ

ディネシュ、私はあなたが無効にするものについてきめ細かな制御が必要だと理解しました。
ジャニス

回答:


10

touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$usernameトリックを行う必要があります。chmod 600andを使用して復元しtouchます(ファイルのmtimeを変更して、cronを再ロード(試行)する必要があります)。

少なくともDebianで、おそらくVixie cronを使用している場合chmod 400 /var/spool/cron/crontabs/$usernameでも、この実装は許可を厳密に600にすることをcrontab要求するため、このトリックも行います。ただし、これはユーザーがコマンドを実行するまで続きます。

あなたは堅牢な方法をしたい場合は、私はより良い一時的に邪魔にならない自分のcrontabを移動したり、権限を変更する、よりそこの何も考えていない、一時的に追加します/etc/cron.deny


ありがとう。私のシステムでは/ var / spool / cron / tabs / $ usernameです。ただし、の後でも実行されchmodます。
ディネシュ

ファイルの権限を変更した後、cronを停止/再起動する必要もありました。cronがメモリ内にデータを保持している可能性があるためと思われます。だから私はtouch $username後に追加しましたchmod。しかし、それは助けにはなりませんでした。(ところであなたのポイントを得たcron.deny
ディネッシュ

@Dinesh実際、ファイルのmtimeを更新する必要があります。更新しないと、cronはファイルが変更されていないと判断し、キャッシュされた情報を保持します。昨日のテスト中にこれに気づきましたが、回答でそれを言及するのを忘れました。
ジル 'SO-悪であるのをやめる'

すべての標準ユーザーに対して無効にしたい場合:chgrp root /var/spool/cron/crontabs
shrimpwagon

9

ユーザーcrontabを無効にするには次のようにします。

crontab -l -u [username] >/tmp/[username].cron.tmp
crontab -r -u [username]

再度有効にするには:

crontab -u [username] /tmp/[username].cron.tmp

これには、rootを必要とせずにそのユーザーとして実行できるという追加の利点があります(-uパラメーターを取り去るだけです)。


0

Debianを使用している場合、これはDebian AFAIKにのみ適用されます

これを行うには、cronjobの名前にドットを追加します。

動作はDebian公式ドキュメントで言及されています:

https://www.debian.org/doc/debian-policy/#cron-job-file-names

cronジョブファイル名には、ピリオドまたはプラス文字(。または+)文字を含めないでください。これにより、cronはファイルを無視します。の代わりにアンダースコア(_)を使用する必要があります。および+文字。


0

すべてのcronジョブをしばらく完全に停止したい場合-たとえば、システムメンテナンスを行っている間、これらのジョブとの相互作用が悪い場合-コマンドは通常

systemctl stop crond.service

そして、再開する

systemctl start crond.service

これらを実行するにはルートまたはホイールの権限が必要だと思います。必要に応じて、sudo経由で実行するか、(最終手段)rootとしてログインします。

提起された特定の質問に対するやり過ぎですが、「ワンストップショッピング」を提供し、ファイルシステムまたは一時ファイルで遊ぶ必要はありません。


3
これにより、すべてのユーザーのcronが無効になるため、実際には質問に答えません。
スコット

-1

私は同意します、systemctlを介したパスが取るものです。ラズベリーでは、つま先のコマンドは

sudo systemctl stop cron.service
sudo systemctl start cron.service

1
これにより、cronサービス全体が停止します。OPは、無効にするユーザーのcrontabを選択できるようにしたかったのです。
ロアイマ

1
また、別の答え
ロアイマ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.