Linuxのcron(クーロン)でhello worldを表示するサンプルです。(確認環境:CentOS 7)
目次
サンプル | cronとは |
crondの動作状況を確認する | |
確認手順1 : cron動作の確認用のshファイルを作成 | |
確認手順2 : cronに記載する | |
確認手順3 : cronの実行結果をログで確認する | |
cronの実行処理を停止する(コメントにする) | |
cronの実行タイミングの設定値 | |
その他:メールを確認する、設定 | |
メールを送信しない設定(>/dev/null 2>&1) |
cronとは
- crondがcrontabファイルに書かれたスケジュールに従ってプログラムを実行します。
- ユーザーごとに設定できます。
crondの動作状況を確認する
systemctl status crond.service |
[test@localhost ~]$ systemctl status crond.service
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor prese>
Active: active (running) since Tue 2021-10-05 06:16:28 PDT; 2h 24min ago
Main PID: 1453 (crond)
Tasks: 1 (limit: 4770)
Memory: 3.1M
CGroup: /system.slice/crond.service
└─1453 /usr/sbin/crond -n
1行目は、crondを確認するコマンドです。
4行目は、active(running) 稼働中であることがわかります。
確認手順1 : cron動作の確認用のshファイルを作成
cronで定期的にshファイルを実行するサンプルを作成します。
そのためのファイルを作成します。
[test@localhost ~]$ pwd
/home/test
[test@localhost ~]$ vi test1.sh
[test@localhost ~]$ chmod 775 test1.sh
[test@localhost ~]$ ./test1.sh
hello world
3行目は、viを使用してtext1.shファイルに以下の内容を記載しています。
viで記載する内容
echo hello world >> test1.txt
echo hello-mail
1行目は、ファイルに文字列を追記します。test1.txtがない場合は作成します。
2行目は、実行したユーザ宛に、本文がhello-mailでメール通知されます。
cronから出力が行われるとメールが送信されます。2行目がない場合はメール送信されません。
確認手順2 : cronに記載する
crontab -e |
crontab -eでviエディタが開きます。
[test@localhost ~]$ crontab -e
crontab: installing new crontab
[test@localhost ~]$ crontab -l
* * * * * /home/test/test1.sh
1行目のcrontab -eでviエディタが開くので以下(※)を記述します。
※4行目のcrontab -lは1行目で設定した内容を表示しているのでこれをコピペします。
先頭の「* * * * *」は1分毎にtest1.shを実行します。
確認手順3 : cronの実行結果をログで確認する
cronの実行結果を/var/log/cronで確認できます。参照は権限が必要なのでsudo等を使用します。
[test@localhost ~]$ sudo tail -5 /var/log/cron
Jan 4 16:46:01 localhost CROND[4786]: (test) CMD (/home/test/test1.sh)
Jan 4 16:46:28 localhost crontab[4800]: (test) BEGIN EDIT (test)
Jan 4 16:47:01 localhost CROND[4826]: (test) CMD (/home/test/test1.sh)
Jan 4 16:48:01 localhost CROND[4861]: (test) CMD (/home/test/test1.sh)
Jan 4 16:48:43 localhost crontab[4800]: (test) END EDIT (test)
[test@localhost ~]$
cronの実行処理を停止する(コメントにする)
crontab -eで設定を開き停止する処理の先頭にコメントの#を入力します。
cronの実行タイミングの設定値
cronの設定値は、以下のとおりです。曜日の0と7は日曜です。
1つめの* | 2つめの* | 3つめの* | 4つめの* | 5つめの* |
分(0-59) | 時(0-23) | 日(1-31) | 月(1-12) | 曜日(0-7) |
範囲指定(1-3)、
カンマ区切りでの指定(1,2,3)、
繰り返しの指定(*/1)(例:1分毎)もできます。
00 * * * * /home/test/test1.sh | 毎時00分に実行 |
00 9 * * * /home/test/test1.sh | 毎日9時に実行 |
00 9 5 * * /home/test/test1.sh | 毎月5日の9時に実行 |
00 9 5 4 * /home/test/test1.sh | 4月5日の9時に実行 |
00 9 * * 3 /home/test/test1.sh | 毎週水曜の9時に実行 |
00 3-5 * * * /home/test/test1.sh | 毎日3時,4時,5時に実行 |
00 3,5 * * * /home/test/test1.sh | 毎日3時,5時に実行 |
* */1 * * * /home/test/test1.sh | 毎時00分で1時間ごとに実行 |
* * * * * /home/test/test1.sh | 1分ごとに実行 |
その他:メールを確認する、設定
cronから出力が行われるとメールが送信されます。
/var/spool/mailにメールがあります。
ls -l /var/spool/mail
mailでメールを見れます。エンタキーで次に進みます。xで終了します。pで現在のメールを見ます。hでメールのリストを表示します。
その他、cat /etc/crontab ではcrontabの設定と実行の定義を確認できます。
[test@localhost ~]$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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
[test@localhost ~]$
メールを送信しない設定(>/dev/null 2>&1)
>/dev/null 2>&1 |
* * * * * /home/test/test1.sh >/dev/null 2>&1
メールを送信したくない場合は、crontab -eでviエディタを開き「>/dev/null 2>&1」を追記します。
「2>&1」で「2の標準エラー出力」を「1の標準出力」にマージし「>/dev/null」で標準出力を捨てます。
関連の記事