cron とは?
時間を指定して定期的にタスクを自動実行することができるツールです。
cron と crontab の違いは、「cron」は機能を示す名称で、一方「crontab」はコマンド名またはファイル名です。
cron に関してのファイルまたは、ディレクトリには以下のものがあります。
- /etc
- anacrontab
- cron.d
- cron.daily
- cron.deny
- cron.hourly
- cron.monthly
- cron.weekly
- crontab
上記のファイルやディレクトリの内容は以下の表のようになっています。
ファイル・ディレクトリのパス |
利用者 |
内容 |
/var/spool/cron/<ユーザー名> |
全ユーザ |
ユーザ毎の自動タスク設定ファイル |
/etc/crontab |
root |
毎時、毎日、毎月、毎週の自動タスクのメイン設定ファイル |
/etc/cron.hourly |
root |
毎時実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.daily |
root |
毎日実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.monthly |
root |
毎月実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.weekly |
root |
毎週実行される自動タスク設定ファイルを置くディレクトリ |
/etc/cron.d |
root |
上記以外の自動タスク設定ファイルを置くディレクトリ |
設定方法
AlmaLinux9の場合、cron の設定ファイルは、/etc/crontabです。
RedHot系では、/etc/crontabのファイルを直接編集することは推奨されていないため、crontab コマンドか「cron.monthly」、「cron.weekly」、「cron.daily」、「cron.hourly」配下のファイルを編集して設定を行います。
crontab コマンド
crontab コマンドのオプションには、以下のものがあります。
-e |
crontabを対話的に編集します |
-l |
crontabファイルの内容を表示 |
-r |
crontabファイルを削除 |
-u |
-u の後にユーザー名を指定。指定したユーザーのファイルを捜査対象とします。rootユーザーのみ利用可能なオプション。 |
cron の登録をするには、以下のコマンドを実行します。
登録されている cron を表示するには、以下のコマンドを実行します。
設定をすべて削除するには、以下のコマンドを実行します。
rootユーザが、testユーザの crontabファイルを表示するには、以下のコマンドを実行します。
自分自身の crontabファイルを編集するには、以下のコマンドを実行します。
設定の書き方
以下の書き方の場合、「 毎分 /home/user/test.sh のファイルを実行 」します。
設定の書き方
# 左から、[分] [時] [日] [月] [曜日] [コマンド]
* * * * * /home/user/test.sh
項目 |
設定値 |
分 |
0 ~ 59 |
時 |
0 ~ 23 |
日 |
1 ~ 31 |
月 |
1 ~ 12 |
曜日 |
0 ~ 7 ※日が0または7、月が1、火が2、水が3、木が4、金が5、土が6 |
例として、/home/user/cronTime.shを毎分実行するように、cron に登録します。
/home/userに、cronTime.shとcronTimeResult.txtファイルを作成します。
touch cronTime.sh cronTimeResult.txt
作成したファイルの権限を変更します。
chmod 755 cronTime.sh cronTimeResult.txt
cronTime.shの内容を以下のように編集します。ファイルの内容は、cronTimeResult.txtに日付と時刻を書き込むスクリプトです。
#!/bin/bash
date '+%Y/%m/%d %H:%M:%S' >> /home/user/cronTimeResult.txt
以下のコマンドを実行して、cronの編集を行います。内容はcronTime.shを毎分実行するように登録します。
* * * * * /home/user/cronTime.sh
以下のコマンドを実行して、cronTimeResult.txtに、毎分、日付と時刻が書き込まれるか、以下のコマンドを実行して監視してみます。
tail -f cronTimeResult.txt
1分おきに日付と時刻が表示されれば設定はできています。監視を終了するには、Ctrl + cで終了します。