CentOS cronでhello worldを表示するサンプル

CentOSのcron(クーロン)でhello worldを表示するサンプルです。(確認環境:CentOS 7)

目次

サンプル cronとは
crondを確認する
shファイルを作成しhello worldを表示
cronに記載する
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であることがわかります。

 

shファイルを作成しhello worldを表示

[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ファイルに以下の内容を記載しています。


5行目は、ファイルを実行し文字列を出力します。

 

cronに記載する

crontab -e
[test@localhost ~]$ crontab -e
crontab: installing new crontab
[test@localhost ~]$ crontab -l
* * * * * /home/test/test1.sh >> /home/test/test1.txt

1行目のcrontab -eでviエディタが開くので以下を記述します。

意味:1分ごとにtest1.shを実行して>>でtest1.txtに追記します。
test1.txtがない場合は作成します。
* * * * *は1分毎にtest1.shを実行します。

4行目のcrontab -lは1行目で設定した内容を表示しています。

 

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の実行処理を停止する(コメントにする)

crontab -eで設定を開き停止する処理の先頭にコメントの#を入力します。

 

cronの実行結果をログで確認する

[root@localhost test]# tail -5 /var/log/cron
Oct 17 08:27:12 localhost crontab[6168]: (root) BEGIN EDIT (root)
Oct 17 08:27:17 localhost crontab[6168]: (root) REPLACE (root)
Oct 17 08:27:17 localhost crontab[6168]: (root) END EDIT (root)
Oct 17 08:28:01 localhost crond[1121]: (root) RELOAD (/var/spool/cron/root)
Oct 17 08:28:02 localhost CROND[6229]: (test) CMD (/home/test/test1.sh >> /home/test/test1.txt)
[root@localhost test]#

cronの実行結果を/var/log/cronで確認できます。参照は権限が必要なのでsudo等を使用します。

 

メールを送信しない設定(>/dev/null 2>&1)

* * * * * /home/test/test1.sh >/dev/null 2>&1

メールを送信したくない場合は、「>/dev/null 2>&1」を追記します。

「2>&1」で「2の標準エラー出力」を「1の標準出力」にマージし「>/dev/null」で標準出力を捨てます。

関連の記事

CentOS コマンド一覧 (Linux)

△上に戻る