ユーザーに対してcronjobを一時的に無効にする方法は?

ユーザーに対してcronjobを一時的に無効にする方法は?

1人以上のユーザーに対してcronジョブを一時的に無効にする方法は?特に、私はユーザーのcron権限を一時停止したくありません。ただ、どんな仕事でもユーザーを解雇しないだけです。

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

答え1

(この回答はsystemdより前に書かれています。この場合、systemdバージョンのcronがどのように機能するかを確認していません。)

touch /var/spool/cron/crontabs/$username; chmod 0 /var/spool/cron/crontabs/$usernameこれで問題が解決します。使用と復元chmod 600touchcronに再ロードするには、ファイルのmtimeを変更する必要があります)。

少なくともDebianでは、おそらく一般的なVixie cronではchmod 400 /var/spool/cron/crontabs/$usernameこれが可能です。これは、権限が正確に600でなければならないと主張するためです。ただし、これはユーザーがコマンドを実行するまで持続しますcrontab

強力なアプローチが必要な場合は、一時的にcrontabを削除したり権限を変更したりするよりも良い方法はないと思います。そしてに追加してください/etc/cron.deny

答え2

次のようにユーザーcrontabを無効にするのはどうですか?

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

再度有効にしてください。

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

これには、ルートなしでそのユーザーとして実行できるという利点があります(-uパラメータのみを削除するだけです)。

答え3

cron一定期間にわたってすべてのタスクを完全に停止したい場合(たとえば、システムのメンテナンス中に不要な対話ができる場合)、通常コマンドは次のようになります。

sudo systemctl stop crond.service

そして、復元

sudo systemctl start crond.service

ただし、一部のシステムでは、次のようにcron.service確認crond.serviceできます。

$ systemctl list-units --type=service | grep cron

特定の質問については少し過剰ですが、「ワンストップショッピング」を提供し、ファイルシステムや一時ファイルを使用する必要はありません。シングルユーザーアカウントを使用する小規模の組み込みシステム(Raspberry Pi、Beagle Boneなど)にも適しています。

答え4

また、使用することができます

crontab -l | sed '/^\s*[0-9\*]/s/^/#---inserted-by-my-script---/' | crontab

そして再び活性化

crontab -l | sed 's/^\#---inserted-by-my-script---//'| crontab

最初の行は#---inserted-by-my-script---各行の前にアクティブなクローンタブを追加し、2行目はそれを再び削除します。一時コピーを使用した後に実行するときの問題crontab -rは、2回使用できないことです。 crontabを削除し、誤ってcrontabの既存の一時コピーを空のコピーで上書きした場合、バックアップはありません。

関連情報