7/15日から始まるAmazonプライムデーの準備はおすみですか? ギフト券チャージで最大3%ポイント還元!

【Linux】crontabコマンドを使ってコマンドを定期的に実行する

プログラムを作ったんだけど、使うタイミングは決まっているんだよね。定期的にプログラムを動かす方法はないのかな?

 

Linuxで特定のコマンド(プログラム)を定期的に実行したい時には、crontabコマンドを使って設定することが可能です

 

crontabとは

  • 決められた時刻に
  • 特定のコマンドを
  • 定期的に実行する

cronを設定するためのコマンドです。

 

つまり、コマンドを定期的に動かす機能がcroncronを設定するためのコマンドがcrontabです。

 

以下ではcrontabコマンドのオプション、書式をまとめてあります。

文字だけでは分かりにくいので「cron設定方法の手順」にはサンプルも記載しました。

crontabのオプション

crontabコマンドにオプションを付けると、以下の処理をします。

オプション説明
crontab -ecrontabの編集
crontab -lcrontabの表示
crontab -rcrontabの削除
注意

crontabの編集と削除のオプションeとrがキーボードで隣にあり、間違ったら大変なことになるため、crontab -eを使わない方がいい。と考えている方もいるようです。

 

会社の方針を聞いた上で使用するのがいいかもしれません。

参考 crontab -e は「絶対に」使ってはいけないろば電子が詰まっている

crontabの書式

crontab -eコマンドを実行すると、crontabを編集することができます。

デフォルトのエディタはviになっています。

 

▼viエディタの使い方を知りたい方はこちら▼

【Linux】viエディタの使い方

 

crontabの書式は全部で6つのフィールドからなっており、フィールドごとに半角スペースで区切ります

6つのフィールドの説明を、次の表に示します。

Noフィールド設定可能な値
10-59
20-23
31-31
41-12
5曜日0-6(0が日曜)
6コマンド実行するコマンドを指定

crontab設定方法の手順(サンプル)

まずは、crontabコマンドに-eオプションをつけて実行します。

crontab -e

 

サンプル1:毎日、特定の時間に実行

「/usr/local/bin/xxxx」を「毎日1回」「1時0分」に実行したい場合

0 1 * * * /usr/local/bin/xxxx

 

実行する時間は、1時0分なので「1フィールドは0」「2フィールドは1」にします。

毎日実行するので「3・4・5フィールドは*」にします。

サンプル2:毎週特定の曜日、特定の時間に実行

「/usr/local/bin/xxxx」を「毎週月曜から木曜」の「15時から17時の毎時0分」に実行したい場合

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勉強中という方」はこちらもどうぞ▼

【Linux】初心者を脱出するためのコマンドを覚えよう