/var/spool/cron/crontabs/{{user}}
/etc/crontab/
/etc/cron.d/*
ref. https://penpen-dev.com/blog/cron/
crontab で作成したファイルは /var/spool/cron/crontabs/{{user}} に作成されます。
* * * * * コマンド
分 時 日 月 曜日
crontab で作成する例です。
/var/spool/cron/crontabs/{{user}} に保存されます。
現在は /etc/cron.d/ に直接ファイルを作成するほうが推奨されています。
# 1分ごとに /date/log.txt へ日時を出力
*/1 * * * * echo `date` >log.txt
リダイレクションとパスの間には空白は入れません。
現在は /etc/cron.d/
にファイルを作成するほうが推奨される場合が多いようです。$ sudo cp /etc/crontab /etc/cron.d/sample
のように /etc/crontab
をひな形として利用します。
AWS EC2 Ubuntu22.04 は /etc/cron.d の権限は 755 です。
$ ll /etc | grep cron.d
drwxr-xr-x 2 root root 4096 Sep 9 15:59 cron.d/
/etc/cron.d/sampl の所有者は ubuntu で実行可能です(その他に r x が付与されているため)。
l /etc/cron.d
total 24
.....
-rw-r--r-- 1 ubuntu ubuntu 872 Sep 9 15:59 sample
標準出力および標準エラー出力ともに /home/ubuntu/sample.log に出力するサンプルを記載します。
/etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
# You can also override PATH, but by default, newer versions inherit it from the environment
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
*/1 * * * * ubuntu echo "$(date)" >>/home/ubuntu/log.txt 2>&1
Cron
の設定は、直接ファイルを編集せずに、crontab
コマンドを使います(※1)。
現在は /etc/cron.d/
にファイルを作成するほうが推奨されます。
そのときは$ sudo cp /etc/crontab /etc/cron.d/sample
のように/etc/crontab
をひな形として利用します。
# 編集
$ crontab -e
# 削除
$ crontab -r
# 一覧
$ crontab -l
ubuntu
ユーザーのcrontab
のファイルは、/var/spool/cron/crontabs/ubuntu
(Ubuntu 18.04)へ保存されます。
$ sudo ls -al /var/spool/cron/crontabs/ubuntu
-rw------- 1 ubuntu crontab 1089 Oct 13 07:23 /var/spool/cron/crontabs/ubuntu
MAILTO
が指定されているときは、標準出力(エラー含む)の内容を指定アドレスへ送信します。
(出力内容がファイルなどへリダイレクションされているときはメールは送信されません。)MAILTO
が未設定のときは、Cronの作成ユーザーへメールが送信されます。
MAILTO="info@info-town.jp"
LANG=ja_JP.UTF-8
LC_ALL=ja_JP.UTF-8
CONTENT_TYPE=text/plain; charset=UTF-8
*/1 * * * * echo `date`
# 標準出力・エラー出力とも/dev/nullに出力
*/1 * * * * echo `date` >/dev/null 2>&1
# 標準出力はlog.txt、標準エラー出力はerror.logへ出力します。
# 下記はechoがエラーなのでerror.logへ出力されます。
*/1 * * * * eecho `date` >>log.txt 2>>error.log
# 標準エラー出力を標準出力へリダイレクトします。
# 下記はエラー出力はlog.txtへ出力されます。
*/1 * * * * echo `date` >>log.txt 2>&1
2>&1
は2>>&1
と書くと実行されません/etc/cron.d
にファイルを作成(ファイル名は任意)します。
cron.d
へ配置する場合は、実行ユーザーを明示する必要があります。
https://vividcode.hatenablog.com/entry/man-cron-and-crontab
Cron
の設定で、メールアドレスおよびリダイレクションを設定していないとき場合には、ログは/var/log/cron.log
に出力