主に重複登録をしないようにするためのtipsを紹介する。

cron登録コマンド

echo "0 9,18 * * * /usr/local/bin/example.sh" | crontab

こんな感じ。とても簡単。 ただ、これは設定を上書きするという非常に危険なコマンド。 通常は以下のように使う。

(crontab -l; echo  "0 9,18 * * * /usr/local/bin/example.sh") | crontab

Makefile化

install:
    (crontab -l; echo  "0 9,18 * * * /usr/local/bin/example.sh") | crontab

そのまんま。これで、make installすればcron に登録される。 これの問題点は、重複登録してしまうこと。

以下のように書くことで、重複登録が防げる。

install:
	crontab -l | grep example.sh || \
		(crontab -l; echo  "0 9,18 * * * /usr/local/bin/example.sh") | crontab

||でつなぐことで、最初のコマンドが失敗したときだけ、次のコマンドを実行するようになる。 ここでは、既に登録されているcrongrepして、登録しようとしているスクリプトがあれば何もせず終了、 なければ登録する。

uninstall

おまけ。uninstallは以下のように書けば良い。

uninstall:
	crontab -l | grep -v example.sh | crontab