こんにちは、ユリウスです。
突然ですが、みなさんは子供のころ、
「寝ている間にこの宿題をランプの精がやっておいてくれればいいのになぁ…」
と思った経験はありませんか?
私にはあります。子供のころは宿題が苦手で苦手で…。
さすがに今から子供のころに戻って宿題をやってもらうわけにはいきませんが、
現代には頼りになるランプの精がいます。その住処はパーソナルコンピュータ。
(そう、あなたが今マウスを操作しているこのパソコンです)
弊社のパソコン LinuxMania PC の中にも、働き者のランプの精が住んでいます。
あらかじめ仕事を頼んでおくと、朝昼夕夜問わず時間が来たら実行してくれます。
その名は crond。今回の記事の主役です。
1. crond の動作
crond はいつもパソコンに常駐し、仕事の時間が来るたびに実行してくれます。
仕事のスケジュールは分刻みで指定できますが、毎時/毎日/毎週 なども指定できます。
より複雑なスケジュールでもOKです。(平日9時から6時まで30分ごとに実行、など)
スケジュールの内容は、 crontab というファイルに書かれています。
2. crontab ファイルの編集方法
ユーザがcrontab ファイルを編集するには、crontab というコマンド を実行します。
次のコマンドを実行すると、crontab ファイルを nano エディタで編集できます。
$ EDITOR=nano crontab -e
編集した後は、忘れずに保存して終了します。(Ctrl+O で保存、Ctrl+X で終了です)
3. crontab ファイルの書式
crontab ファイルでは、次のような書式でスケジュールを指定します。
<分> <時> <日> <月> <曜日> <コマンド>
それぞれの項目で指定可能な値は、以下の通りです。
分: 0-59
時: 0-23
日: 1-31
月: 1-12 (または名前。月の最初の3文字 (Jun、Jul など))
曜日: 0-7 (0と7は日曜日。名前も利用可能 (Sun、Mon など))
コマンド: 実行するコマンド (シェルスクリプトを指定することが多いです)
4. crontab の設定例
たとえば、毎日コマンドを実行するには、
2 4 * * * hogehoge-daily.sh
のように指定します。(この例では、毎日午前4時2分に実行されます)
※「*」は、特に指定しないことを意味します(チェックの際に無視されます)。
また、毎月1回コマンドを実行するには、
42 4 1 * * hogehoge-monthly.sh
のように指定します。(毎月1日の午前4時42分に実行されます)
数値を範囲で指定することもできます。
たとえば、平日の業務中だけ実行したい場合は、
0 9-18 * * 1-5 hogehoge-working.sh
のように、ハイフン(-)で範囲を指定します。
間隔を指定し、2時間おきや3時間おきに実行することも可能です。
スラッシュ(/)で指定します。
0 */3 * * * hogehoge-3hours.sh
(この例では、毎日0時、3時、6時…18時、21時に実行されます)
範囲と間隔を同時に指定することもできます。
0 9-18/2 * * 1-5 hogehoge-2hours-in-work.sh
(この例では、平日9時、11時、13時…17時に実行されます)
5. crond の利用実態
crond は、普段私たちが指示していない時にも次のような仕事をしています。
- ログの回転 (定期的に古いログファイルの移動や削除を行います)
- ヘルプのインデックス作成 (ヘルプのキーワード辞書を作成します)
- ファイル実行高速化の仕込み
たまに深夜に耳を澄ませてみると、crond の働いている音が聞こえると思いますよ。
6. おわりに
今回は、パソコンの中のランプの精こと、crond について紹介しました。
crond は、スケジュールさえ教えれば私たちが寝ている間も仕事をしてくれます。
みなさんも、ぜひ仕事を頼んでみて下さい。暮らしが楽になると思いますよ!
次回は、複数のコマンドをまとめて実行できる シェルスクリプト について、
作り方を簡単に説明したいと思います。お楽しみに!