はじめに
先日、業務中にどんな日時バッチを行なっているのか気になって/etc/cron/配下を調べてみました。しかし、そのフォルダ配下には私が探しているバッチプログラムがありませんでした。少し気になって調べたところ、/var/spool/cron/{user}に書かれていたので、その違いを議事録として残しておきます。
Cronのおさらい
そもそもcronとは、Linuxのジョブを自動実行するためのデーモンのことを指します。実行したいプログラムをスケジューリングすることで、定期実行を行なってくれるのでバッチに使われます。ある特定の日時に一度だけ実行したい場合はcronではなくatコマンドを用いるといいと思います。
/etc/crontabと/var/spool/cronディレクトリの違い
/etc/crontab
・利用者:root
・システム全体に適用したいジョブを定期実行したいときに用いる
・ファイルの記載方法は分 時 日 月 曜日 ユーザ コマンド
・/etc/crontabは「大元の設定ファイル」のイメージなのでできるだけ編集しない方がいい
・システム全体に適用したいジョブがある場合は、
/etc/cron.hourly
,/etc/cron.daily
,/etc/cron.weekly
,/etc/cron.monthly
配下のファイルに設定を行う(/etc/crontabに、上4つのディレクトリが時間ごとに定期実行されるように設定されている)
・ファイルの編集はvi /etc/crontab
/var/spool/cron/{user}
・利用者:各user
・ユーザーごとのジョブの定期実行に用いる
・ファイルの記載方法は分 時 日 月 曜日 コマンド
(etc/crontabファイルと違ってユーザは指定しない)
・ファイルの作成/編集 はcrontab -e
終わりに
Djangoのカスタムコマンドを作成して、cronに登録しておくと便利そうですね。
参考記事