Works by

Ren's blog

@rennnosuke_rk 技術ブログです

Cronで任意の日時にプログラムを自動実行する

f:id:rennnosukesann:20180419235423p:plain:w300

Cronとは

Cronとは、指定したプログラムを自動実行してくれる仕組みです。
UNIX系OSには標準で組み込まれており、自作のスクリプトを指定した時間に実行したり、一定間隔で実行することができます。

Usage

実行環境はMac OS X High Sierraです。

Cronを利用するためには、crontab コマンドを利用します。

# Cronエディタを開く
crontab -e

crontab -eでスケジュール編集画面を開き、実行したいプログラムを指定します。 スケジュールを記述するためのフォーマット(一行分)は以下のようになります。

[] [] [] [] [曜日]  [実行したいコマンド、オプション、引数]

[分] [時] [日] [月] [曜日] には実行する時刻を指定します。
例えば5月10日19時14分に命令を実行したい場合

# 5月10日19時14分にhoge.txtがホームに生成される
14 19 10 5 * echo "hoge"  > ~/hoge.txt

となります。 *は未指定を表します。また上記の例のとおり、 [実行したいコマンド、オプション、引数]にはシェル上でワンライナーで実行するときと同様に命令を記述します。

Ex.

# 毎時10分にhoge.txtがホームに生成される
10 * * * * echo "hoge"  > ~/hoge.txt

# 毎日12時10分にhoge.txtがホームに生成される
10 12 * * * echo "hoge"  > ~/hoge.txt

# 毎月1日12時10分にhoge.txtがホームに生成される
10 12 1 * * echo "hoge"  > ~/hoge.txt

# 5月1日12時10分にhoge.txtがホームに生成される
10 12 1 5 * echo "hoge"  > ~/hoge.txt

# 火曜日の5月1日12時10分にhoge.txtがホームに生成される
# 曜日は0=日、1=月、2=火、3=水、4=木、5=金、6=土、7=日
10 12 1 5 2 echo "hoge"  > ~/hoge.txt

また各指定数の後ろに/をつけ数値を指定すると、
指定した間隔で処理を繰り返すようになる。

# 1分おきに"hello, cron!"という文字列行がhoge.txtに追加される
$ crontab -e
*/1 * * * * echo "hello, cron!" >> ~/hoge.txt
$ cat ~/hoge.txt
hello, cron!
hello, cron!
hello, cron!
hello, cron!
hello, cron!
hello, cron!