cronでプログラムをスケジューリング
所沢でWebサイト制作や欧州輸入品を販売しているRishunTradingです。
今回は、定期処理を実行する際によく使用するcronについて記載したいと思います。
cronを覚えておくと、プログラムのスケジューリングが可能となりますので、メールマガジンの日時指定配信や、バックアップ処理、夜間の定期処理など様々な事に活用する事ができます。
1.cronとは
cronについてお話をする前に、cronとは何?という方に簡単に説明しますと、cronとは、「何を」、「いつ」、「どのくらいの頻度で」をサーバーに設定する事で、プログラム実行のスケジューリングができるLinuxサーバーの機能の事です。
なお、設定するコマンド名、または設定ファイル名は、「crontab」となります。
2.cronの書き方
crontabコマンドを実行するためには、SSHソフトからサーバーにログインし、コマンドを実行する必要があります。そのため、事前に、TeraTermなどをセットアップしてSSHでサーバーに接続できるようにしておく必要があります。
※SSHやTeraTermをご存じで無い方は、ネットで検索して事前に設定しておきましょう。
2.1.crontabファイルの開き方
1 | $ crontab -e |
上記のコマンドを実行すると、vi(テキスト編集エディタ―)が起動し、crontabファイルを開く事ができます。crontabファイルの1行が、「何を」、「いつ」、「どのくらいの頻度で」実行するかの設定になります。
キーボードのiを押して編集モードにし、crontabファイルをcrontabファイルのルールに従って、「何を」、「いつ」、「どのくらいの頻度で」実行するかを記載します(記載方法は後述します)。編集が完了しましたら、キーボードの:wqで編集内容を保存し、終了します。
参考)vi(テキスト編集エディタ―)のコマンド簡易表
オプション | 説明 |
i | 編集モードにする |
x | 1文字削除する |
dd | 1行削除する |
:wq | 編集内容を保存して終了 |
参考)crontabのオプション
オプション | 説明 |
-e | crontabファイルの編集 |
-l | crontabファイルの内容表示 |
-r | crontabファイルの設定削除 |
-u | cronを設定するユーザーを指定 |
2.2.スケジューリング方法(タスクの記述)
crontabファイルの各行に、以下に記載した構文で、動かすプログラムのスケジューリング(タスク)を定義します。なお、以下の構文を見て頂けると分かりますが、最小のタイミングは分です。分より細かいタイミングで定義することはできません。
1 2 3 4 5 6 7 | * * * * * (実行するコマンド) | | | | | | | | | ---- 曜日フィールド(0~6) | | | ------ 月フィールド(1~12) | | -------- 日フィールド(1~31) | ---------- 時フィールド(0~23) ------------ 分フィールド(0~59) |
2.2.1.各フィールド(分・時・日・月・曜日)の書き方
分から曜日までの各フィールドには以下のように複数の値が設定可能となっています。
設定法 | 説明 | 記述例 |
列挙 | ,(コンマ) で値のリストを指定 | 1,3,6 |
範囲指定 | -(ダッシュ)で値の範囲を指定 | 1-6(1,2,3,4,5,6と同じ) |
間隔指定 | /(スラッシュ )で間隔を指定 | */10(時なら0,10,20と同じ) |
全て | *(アスタリスク) | *(時なら1時間毎と同じ) |
2.2.2.実行するコマンドの書き方
動かすプログラム(スクリプトや実行モジュール)を絶対パスで指定します。パラメータにファイルを指定する場合も絶対パスとなりますので、ご注意ください。
phpのプログラム実行をスケジューリングする場合には、phpのあるディレクトリを絶対パスで記述したphpの実行コマンド名(php)と、該当のphpプログラムを絶対パスで記述します。
※phpの実行コマンドに、パスが通っている場合には、絶対パスで指定する必要はなく、phpだけで大丈夫です、サーバーによって事なりますので、お使いのサーバーをご確認ください。
例)example.phpを1時間おきに動かす場合
1 | 0 */1 * * * /usr/bin/php /home/example/public_html/example.php |
例)example.phpを毎日夜中の2:00に動かす場合
1 | 0 2 * * * /usr/bin/php /home/example/public_html/example.php |
2.3.crontabファイル保存時のエラー
crontabコマンドで編集をしたときに、ファイル内容に誤りがあればエラーメッセージが表示されます。
3.うまく動かない時には
該当のプログラムをcrontabに登録せずに、まずは、実際に動かしてみて動作に問題がないか確認してから、crontabに登録しましょう。
phpのプログラムであれば”php (実行するphpファイル名).php”で実行できます。
WEB DESIGN全てお任せ!ホームページ制作
RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。
「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。
運用開始後に「Webサイト運用管理サービス(保守)」と組み合わせて購入しますと、メンテナンス、更新も含めてすべて弊社で実施しますので、お客様は安心して本業に集中する事ができます。
しかもなんと、「全てお任せ!ホームページ制作」は、¥100,000!で提供しております。
本業が忙しい中小企業様に大変ご好評を頂いている商品です。
独自ドメイン取得
サーバー開設&設定
レイアウト設計
レスポンシブルデザイン
(*1)検索エンジン最適化
(SEO対策)場所Maps
お問い合わせフォーム
SSL化
各種SNS連携
運用マニュアル