Linuxサーバーの管理をしていると、プログラムを定期的に実行したい場合があります。そのようなときは、「cron」という機能をお試しください。ルールがやや複雑ですが、仕組みがわかればいろいろな予約とその繰り返しに応用できます。これでサーバーを効率良く、さらに正確に管理できるようになります。
目次
cronとは?
Linuxサーバーの管理で、大切な設定方法の一つです。ポイントは「何を」「いつ(頻度)」実行するかを決めて、そのルールを書き込むことです。正しく設定したかをチェックすることも大切です。似たような用語に「crontab」がありますが、その違いについても簡単に解説しましょう。
なお筆者は、長い間「複製」の意味の「クローン(clone)」と勘違いしていました。二つともITの現場で使われていますが、スペルも機能も異なります。こちらの記事は「cron」についてです。
cron利用のメリット
だいたい以下のポイントに整理できると考えます。
・指定したプログラムの動作を予約できる
・実行する頻度を細かく調整できるので、自動的に繰り返すことができる
・以上によりサーバー管理者の負担とミスは減り、より効率良くサーバーの管理業務ができる
cronとcrontabの違い
他のサーバー管理の専門用語でよくあるように、言葉に似ていても意味が異なります。「cron」は機能を示す名称で、一方「crontab」はコマンド名またはファイル名です。
cronで何ができるの?
それでは、便利な用途をいくつかご紹介しましょう。cronを正確に設定すれば、これで定型的な業務もはかどりますね。
定期的なファイル転送を自動化して、Webサイトを楽に更新する!
PCの前に24時間張り付いて、FTPなどの操作する必要はありません。cronで設定しておけば、早朝や外出時でもファイル転送プログラムが自動的に稼働するからです。
Webサイトの定期的なバックアップに
いざというときのバックアップも、定期的な作業としてcronに登録しておけば安心ですね。実施時間、対象フォルダやファイルなどを指定するなどルール化して、設定しましょう。
メールマガジンの日時指定配信などに
お客様にお届けする原稿を事前に用意し登録しておけば、予約時間にメールマガジンとして自動配信が可能です。
その他にもできることは多い
無料SSLが使える「Let’s Encrypt」を、cronで自動更新(3か月毎)することもできます。こちらの記事の下の方で、スクリプトのサンプルをご紹介しています。
【無料SSL入門】「Let's Encrypt」とは?設定で挫折しない!使い方解説
「Let's Encrypt」では、無料でSSL証明書を発行できます。無料のため不安に感じてしまう安全性や、ややわかりづらい設定方法、そしてサイトのリダイレクト方法をご紹介しています。それでは早速見てみましょう。 ※上記はInternet Security Research Groupの商標です。すべての権利はInternet Security Research Groupが保有しています。 「L…
その他繰り返し動かしたいプログラムがある場合は、応用して実現できる場合もあります。まずは設定方法の基本をマスターしてから、チャレンジしてみてはいかがでしょうか。
cronの書き方と設定事例
それでは実践編として、操作と書き方の説明に移ります。一つひとつのルールはシンプルです。
cronの操作方法
cronの操作でよく使うコマンドをまとめています。事前準備として、suコマンドでプログラムの実行権限を持つユーザーになりましょう。
cronの開き方
【コマンド】
crontab -e
cronの表示方法
【コマンド】
crontab -l
cronの削除方法
【コマンド】
crontab -r
cronファイルの書き方
cronファイルはスケジュールを指定する部分と、コマンドを指定する部分とで構成されています。基本ルールは以下の通りです。スケジュールとコマンドの間は半角空けます。
スケジュールを指定する部分
初期状態は「* * * * *」と「*」が5つ並び、毎分(1分毎)にコマンドが実行されます。「*」と「*」の間は半角空けます。
【コマンド】
* * * * * (コマンド)
「*」の位置(左端から) | 頻度 | 指定できる数字 | 備考 |
---|---|---|---|
1番目 | 分 | 0-59 | |
2番目 | 時 | 0-23 | |
3番目 | 日 | 1-31 | |
4番目 | 月 | 1-12 | |
5番目 | 曜日 | 0-7 | 0と7は日曜日 |
【例1】毎月10日の午前4時59日にコマンドを実行する場合
【コマンド】
59 04 10 * * (コマンド)
【例2】毎時0分で1時間おきにコマンドを実行する場合
【コマンド】
* */1 * * * (コマンド)
【ここがポイント!】
このように「/」を入れると繰り返したい間隔が指定できます。
コマンドを指定する部分
スケジュールを指定する部分より半角空けて、コマンドを指定します。
【ここがポイント!】
実行するプログラムをフルパスで指定します。
【例3】毎月10日の午前4時59日にコマンド「/home/test01/test.sh」を実行する場合
【コマンド】
59 04 10 * * /home/test01/test.sh
注意事項
cronが動作していない場合
ログやエラーメッセージを確認し、「環境変数のパス」を見直すと解消される場合があります。
指定するスケジュール
可能な限り、「切りのいい」数字は避けるようにしましょう。例えば毎時00分とする場合などです。同時刻に動くプログラムが他にある確率が高くなるからです。このように同時に複数のプログラムが動き始めると、サーバー全体に負荷がかかり不安定になったり、処理速度が低下しがちです。
事例紹介
一例として、無料SSL「Let’s Encrypt」をcronで自動更新することができます。Let’s Encryptには有効期限(3ヶ月)があり、その期限を過ぎると無効になります。自動更新の設定をしておけば、たとえ忘れたとしても安心ですね。手順は以下の通りです。
cronをroot権限で開く
【コマンド】
crontab -u root -e
コマンドを登録する
一例として毎月第2火曜日の午前4時59分に、Let’s Encrypt の証明書を更新するコマンド「certbot renew」を実行します。さらに更新のあとに、Webサーバーを再起動します。CentOS 7でWebサーバーとしてApacheを使用している場合は、以下のように登録します。
【コマンド】
59 04 * * 2 certbot renew && systemctl restart httpd
【ここに注意!】
スケジュールを指定する部分は。自由に決めることができます。ただし、Let’s Encrypt」の場合は有効期限が3ヶ月のため、それ以内に更新プログラムが動かす必要があります。3ヶ月以上の頻度にすると、有効期限が過ぎてから更新プログラムが動くため、更新自体ができません。
cronが使えるレンタルサーバーがおすすめ!
一般的にはcronの操作は難しいため、利用できるレンタルサーバー業者が限られています。それらのサービスは、より手軽で同時にミスを防ぐことができるよう工夫されています。一例として、カゴヤ・ジャパンの場合をご紹介しましょう。
カゴヤのレンタルサーバーではcronが簡単に使える!
カゴヤ・ジャパンでは、ブラウザで視覚的に設定ができます。コマンドを全て書く必要がありません。共用レンタルサーバーのサービスプランでは、「S22」以上で利用可能です。「S12」は不可のため、申し込みの時は注意しましょう。
【サービスプラン】 「S22」について
企業名 | カゴヤ・ジャパン |
---|---|
プラン名 | 共用レンタルサーバー |
ディスク容量 | SSD 200GB |
メール容量 | 100GB |
データベース容量 | SSD 10GB |
月額費用 | 2,200円(税込価格) |
無料お試し期間 | 2週間 |
cron設定の流れ(カゴヤの場合)
(1)コントロールパネルにログインする
(2)メニューより「CRON設定」を選択する
(3)【簡易的な記述方法の場合】「CRON設定ウィザード」欄の「開始」ボタンをクリックする
(4)「周期」(実行頻度)を選択し、次に進むボタンをクリックする(画面は毎日一回の場合)
(5)実行時間を選択し、次に進む(画面は毎日0時0分の場合)
(6)「実行するプログラムの種類」と「指定方法」を選択し、次に進むボタをクリックする
あとはプログラムを指定し確定すれば設定完了です。
カゴヤ・ジャパン公式サイトでは、以下のページに詳しい操作方法が掲載されています。
CRON設定
https://support.kagoya.jp/kir/manual/cron/index.html
まとめ
ここまでいかがでしたか。cronの意義を理解すれば、ご利用のサーバーをより効率的に管理や運営ができるようになります。ブラウザ上で簡単に操作ができるカゴヤ・ジャパンの「共用レンタルサーバー」がおすすめです!ぜひご活用ください。
「WordPressを導入したい」「色々な用途に使いたい」という人に!
なんでもできるKAGOYAのレンタルサーバー
法人利用率80%、多数の導入実績。
自社国内データセンターで25年以上の実績。障害に強いサーバー構成で、多くの法人様から選ばれています。
サーバー移転に伴う作業も専門スタッフにおまかせ下さい。