13

Bash/Shell を使用して Crontab タスクを有効または無効にする方法はありますか?

したがって、ユーザーがサーバー 1 を起動すると、サーバー 1 の Crontab 行などが有効になります。また、ユーザーがサーバー 1 を停止すると、サーバー 1 の Crontab 行が無効になります (#)。これは可能ですか?

前もって感謝します

*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check
4

4 に答える 4

20
SERVERNUM=$1

有効にする:

crontab -l | sed "/^#.*Server $SERVERNUM check/s/^#//" | crontab -

無効にするには:

crontab -l | sed "/^[^#].*Server $SERVERNUM check/s/^/#/" | crontab -

転写:

barmar@dev$ crontab -l
*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check
barmar@dev$ crontab -l | sed '/^[^#].*Server 1 check/s/^/#/' | crontab -
barmar@dev$ crontab -l
#*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check
barmar@dev$ crontab -l | sed '/^#.*Server 1 check/s/^#//' | crontab -
barmar@dev$ crontab -l
*/1 * * * * Server 1 check
*/1 * * * * Server 2 check
*/1 * * * * Server 3 check
于 2012-12-23T12:53:43.830 に答える
2

/etc/cron.dサーバーごとに 1 つのスクリプトにcron ジョブを追加することをお勧めします。次に、cron ジョブを実行する必要がある場合は、cron スクリプトにマーカー ファイルをスキャンさせます。

于 2012-12-23T13:00:34.307 に答える
0

これは変種です。私は毎晩それをロードする cronjob を使用しています。ファイルを編集しただけで、毎晩午後 10 時にリロードされます。リロードをより頻繁に行うことができます。ノードごとにファイルのディレクトリを保持しています。秘訣は、だれもリロード行をコメントアウトしないようにすることです。

0 22 * * * crontab /home/ME/cron_files/NODE
于 2012-12-23T13:22:35.983 に答える