WEB TECKS - WEBサイト構築知識いろいろ

crontabの設定による定期的プログラムの自動実行

更新日:2024-03-11 17:38:06 登録日:2024-02-29 15:57:14

 crontabは、Unix,Linux系のサーバで、定期的にプログラム(ジョブ)の実行を行う為の、スケジューリングを設定するためのコマンドです。
 crontabというファイルに、プログラムの実行のスケジュールを設定し、それに基づいてプログラムが実行されます。

crontabファイル記述のフォーマット

 以下がcrontabファイルでのスケジュールの記述フォーマットです。

分 時 日 月 曜日 コマンド

・分 (Minute): 0から59の範囲で指定します。
・時 (Hour): 0から23の範囲で指定します。
・日 (Day): 1から31の範囲で指定します。
・月 (Month): 1から12の範囲で指定します。
・曜日 (Day of Week): 0から7の範囲で指定します (0と7は日曜日を表します)。

 各フィールドは、単一の値、複数の値、範囲、またはワイルドカードを使用して指定します。

・単一の値: 数字を直接指定します (例: 5、12)。
・複数の値: コンマ区切りで複数の値を指定します (例: 2,5,8)。
・範囲: ハイフンで範囲を指定します (例: 1-5)。
・時間ごと: /で時間毎の単位を指定します (例: */15)。
・ワイルドカード: 全ての値を指定します (例: *)。

crontabファイルの編集方法

 「crontab -e」コマンドを実行して、エディタでcrontabファイルを編集します。
 スケジュール数値と、プログラム(ジョブ)パスを追加または変更し、保存します。
([esc]:wq!でエディタが閉じられ・ファイルに保存される)

例)

# crontab -e
# 毎日午前3時に実行するジョブ
0 3 * * * /path/to/command

# 毎週月曜日午前9時に実行するジョブ
0 9 * * 1 /path/to/command

# 毎月1日午前0時に実行するジョブ
0 0 1 * * /path/to/command

# 毎日午前2時から4時まで、15分ごとに実行するジョブ
*/15 2-4 * * * /path/to/command

# 毎週日曜日の午前10時に実行するジョブ
0 10 * * 0 /path/to/command

crontabファイルの確認方法

 「crontab -l」現在のユーザーのcrontabファイルの内容を表示します。

crontabファイルの存在パス

1.ユーザーごとのcrontab
 各ログインユーザで「crontab -e」で編集・保存したときに保存されるファイルです。
 それぞれのユーザーごとのcrontabは、通常、/var/spool/cron/crontabs/ディレクトリ内に保存されます。各ユーザーのcrontabファイルは、ユーザー名と同じ名前のファイルで識別されます。たとえば、ユーザーuser1のcrontabファイルは、/var/spool/cron/crontabs/user1に保存されます。

2.システム全体のcrontab:
 システム全体のcrontabは、通常、/etc/crontabファイルに保存されます。また、/etc/cron.d/ディレクトリ内に他のcrontabファイルがあることもあります。これらのファイルは、特定のジョブやタスクを含む追加のcrontab設定を提供します。
こちらのファイルは「crontab -e」でなく、直接追加・修正する必要があります。

 注意: 上記のファイルパスは、一般的なUnix/Linuxシステムでのものです。システムによっては、これらの場所が異なる場合があります。また、一部のシステムでは、crontabを管理するために特別なツールやディレクトリが使用される場合もあります。

PHPプログラムのcrontabへの追加例

# crontab -e
*/5 * * * * /usr/bin/php /var/www/html/bin/exsample.php