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 600
(touch
cronに再ロードするには、ファイルの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の既存の一時コピーを空のコピーで上書きした場合、バックアップはありません。