cronのデフォルト動作がネット上にもあまりないから、毎回調べるのが定時に変えられないので、世の中の残業がなくなるように、川口の調査流れを共有することにした。(間違ったらごめんなさい)
- サービス管理:systemdに管理されているため、systemctl系のコマンドが実行できる。status/start/stop/restart等々
- サービスログ格納先:/var/log/cron
↑がrsyslogより管理されている、/etc/rsyslog.confで確認/変更できる
cat /etc/rsyslog.conf
# Log cron stuff
cron.* /var/log/cron
-
定義ファイル:
-
システム用
/etc/anacrontab:デフォルトのログローテーション
/etc/crontab:デフォルトの場合は、何も設定されていない -
ユーザ別
/etc/cron.d:ジョブ格納場所
/var/spool/cron:cron定義ファイルの格納場所 -
よく使うコマンド
crontab -e : ログインしているユーザのcronを変更
(viと同じ感覚で編集できるのが、ありがたい)
crontab -u snow -l :ユーザSnowのcrontabを表示
crontab -ir:ログインしているユーザのcronを全部削除
(川口的には、↑は危ないと思って、定時に帰りたいなら、覚えなくてもいいだろう) -
デフォルト動作
①enabledされているため、crondが起動され、/etc/rsyslog.confのcron.* /var/log/cronより、/var/log/cronにログをはく
②/etc/cron.d配下を探して、毎時1分ごとに↓2ファイルを実行する。
[root@test ~]# ls /etc/cron.d/
0hourly raid-check
③/etc/cron.d/0hourlyより、毎時1分ごとに/etc/cron.hourlyをrun-partsする。(run-parts:ディレクトリ配下に格納されてるジョブ全部実行する)
[root@test ~]# ls /etc/cron.hourly
0anacron
④/etc/cron.hourly/0anacronの中、/usr/sbin/anacron -sでanacronを実行する。
⑤④で実行したanacronを/etc/anacrontabをみて、↓をrun-partsする。
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
[root@test ~]# ls /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/
/etc/cron.daily/:
logrotate
/etc/cron.monthly/:
/etc/cron.weekly/:
⑥⑤でrun-partsされた /etc/cron.daily/logrotateは、/usr/sbin/logrotate /etc/logrotate.confで、/etc/logrotate.dをローテーションする。
・anacronのデメリット
①anacronにて、遅延時間があり、想定時間にジョブが実行されない場合がある
②1日単位でしか指定できない
↑によって、cronを使うことが多い
やり方的にも単純:
①「/etc/anacrontab」に記載されている内容をコメントアウトする。
②必要な内容だけを/etc/crontabに転記する。
(cronとanacronの書き方が全然違うため、要注意。)
(具体的な書き方はgoogleに聞いてみればと思って、いろいろな例をコピペで持ってくるのは面倒くさいから、やりません)
(面倒くさいことは一切やりません。)
・cronのメリット
①指定時間に実行できる。
②分単位で設定できる。