cronで自動実行をしてみよう

作成したコードを1時間に一度毎といったタイミングで実行したいという時にはcron(クーロン)を利用します。

cron - ArchWiki


cronは指定した日時に、指定したコマンドやプログラムを自動で実行してくれる仕組みのサービス(常駐プログラム)になります。


ログを自作しながら学ぶで作成しましたコードを使って、cronで自動実行の設定を見ていくことにしましょう。




今回は頻繁に実行しているところを見たいので、1分に一度毎にコードが実行されるようにしてみます。

cronに設定するパスは

$ /usr/local/go/bin/go run /home/pi/log.go

で話を進めます。


goのコマンドはフルパスで登録する必要があります。

コマンドのフルパスがわからない場合は、

$ which go

で調べましょう。


cronの設定はcrontab(クーロンタブ)という設定ファイルに記述していきます。

下記コマンドでcronの設定ファイルであるcrontabを編集する画面を開きます。

$ crontab -e

※ 初回実行の時は編集用のエディタの選択が表示されます。使い慣れているエディタを選択してください。


画面が切り替わりましたら、ファイルの末尾に下記のコードを追加してファイルを保存します。

*/1 * * * * go run /home/pi/log.go

ファイルを保存して閉じた後に

crontab: installing new crontab

が表示されれば、設定は正しく行われています。


設定後にしばらく待ってから下記のコマンドを実行して、ログが自動で追加されていることを確認します。

$ less /var/log/mylogger/app.log



crontabの書き方を見ていきます。

crontabの記述ルールは

* * * * * 実行したいコマンド
┬  ┬  ┬  ┬  ┬
│  │  │  │  └─ 曜日 (0-7)
│  │  │  └─ 月 (1-12)
│  │  └─ 日 (1-31)
│  └─ 時 (0-23)
└─ 分 (0-59)

のようになっています。


例えば、日付が変わったと同時(0時0分)に実行したいということがあれば、

0 0 * * * 実行したいコマンド

のように書きます。


1時間毎や1分毎の場合は、スラッシュを使って、*/1のように記述します。

たとえば、1分毎に実行したい場合は、

*/1 * * * * 実行したいコマンド

にします。


もし、0時の間だけ1分毎に実行したいといった場合は、

*/1 0 * * * 実行したいコマンド

にして、1時以降は5分毎といった形で時間帯を分けたい場合は、

*/5 1 * * * 実行したいコマンド
*/5 2 * * * 実行したいコマンド
*/5 3 * * * 実行したいコマンド
# 以下省略

のように時間帯毎に実行ルールを追加していきます。

日付や曜日等の指定は同じ要領で行ってください。

京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。