プログラムを作ったんだけど、使うタイミングは決まっているんだよね。定期的にプログラムを動かす方法はないのかな?
Linuxで特定のコマンド(プログラム)を定期的に実行したい時には、crontabコマンドを使って設定することが可能です。
crontabとは
- 決められた時刻に
- 特定のコマンドを
- 定期的に実行する
cronを設定するためのコマンドです。
つまり、コマンドを定期的に動かす機能がcron、cronを設定するためのコマンドがcrontabです。
以下ではcrontabコマンドのオプション、書式をまとめてあります。
文字だけでは分かりにくいので「cron設定方法の手順」にはサンプルも記載しました。
crontabのオプション
crontabコマンドにオプションを付けると、以下の処理をします。
オプション | 説明 |
---|---|
crontab -e | crontabの編集 |
crontab -l | crontabの表示 |
crontab -r | crontabの削除 |
crontabの編集と削除のオプションeとrがキーボードで隣にあり、間違ったら大変なことになるため、crontab -eを使わない方がいい。と考えている方もいるようです。
会社の方針を聞いた上で使用するのがいいかもしれません。
参考 crontab -e は「絶対に」使ってはいけないろば電子が詰まっているcrontabの書式
crontab -eコマンドを実行すると、crontabを編集することができます。
デフォルトのエディタはviになっています。
▼viエディタの使い方を知りたい方はこちら▼

crontabの書式は全部で6つのフィールドからなっており、フィールドごとに半角スペースで区切ります。
6つのフィールドの説明を、次の表に示します。
No | フィールド | 設定可能な値 |
---|---|---|
1 | 分 | 0-59 |
2 | 時 | 0-23 |
3 | 日 | 1-31 |
4 | 月 | 1-12 |
5 | 曜日 | 0-6(0が日曜) |
6 | コマンド | 実行するコマンドを指定 |
crontab設定方法の手順(サンプル)
まずは、crontabコマンドに-eオプションをつけて実行します。
copy
crontab -e
サンプル1:毎日、特定の時間に実行
「/usr/local/bin/xxxx」を「毎日1回」「1時0分」に実行したい場合
copy
0 1 * * * /usr/local/bin/xxxx
実行する時間は、1時0分なので「1フィールドは0」「2フィールドは1」にします。
毎日実行するので「3・4・5フィールドは*」にします。
サンプル2:毎週特定の曜日、特定の時間に実行
「/usr/local/bin/xxxx」を「毎週月曜から木曜」の「15時から17時の毎時0分」に実行したい場合
copy
0 15-17 * * 1-4 /usr/local/bin/xxxx
実行する時間は、15時から17時の毎時0分なので「1フィールドは0」「2フィールドは15-17」にします。
実行するのは特定の曜日、毎週月曜から木曜なので「3・4フィールドは*」「5フィールドは1-4」にします。
*は全ての値に一致、-を数字で挟むと範囲の指定をすることができます。
まとめ
- crontabを編集したい時は、crontab -eコマンド
- crontabの書式は半角スペース区切られた6のフィールドから成る
システム間の連携が必要な場合など、定期的にプログラムを動かしてデータを連携することがあります。
そんな時に、crontabを設定すればミスなく連携することが可能です。
すぐに使わなくても、定期的にプログラムを動かせる機能があることを覚えておくと、役立つ時が来ると思います。
▼今回参考にした本はこちらです▼
▼「Linux勉強中という方」はこちらもどうぞ▼
