昨日までのはこちら
100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて
100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて
100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1
100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1
100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1
100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1
本日はクーロンに関するお話です。
クーロン(cron)って何?
簡単に言うとクーロンcronとはMacとかLinuxとかに入っているプログラムのひとつです。
何時にこのプログラムを動かしたい!!のようにプログラムを定期実行をさせたいときに用いる機能になります。
クーロンの使い方
crontabコマンドの実行
クーロンはcrontabコマンドで設定することができます。
初めてcrontabを起動する時は、何も記述されていないはずなので
crontabを起動する際には-eオプションを付けて起動します。
$crontab -e
実行するとこんな入力画面に切り替わります。
ここからはvimを用いて設定をしていくことになるのでvimの使い方も後ほどお伝えします。
クーロンの書き方
クーロンの書き方は以下のようになります。
分 時 日 月 曜日 実行するコマンドのパス(絶対パス)
各項目の間は半角スペースで開けます。
各要素の設定可能な数値は以下の通りです。
| 項目 | 数値 |
|---|---|
| 分 | 0-59 |
| 時 | 0−23 |
| 日 | 1-31 |
| 月 | 1-12 |
| 曜日 | 0-7(0,7が日曜日) |
この数値の指定の仕方は以下の通りになります。
| 指定方法 | 説明 | 設定例 |
|---|---|---|
| リスト指定 | 値を,カンマ区切りのリスト指定 |
0,10,30 |
| 範囲指定 |
開始-終了の範囲で指定 |
1-5 |
| 間隔指定 |
*/数値の間隔で指定 |
*/10 |
| ワイルドカード |
*で指定 |
* |
実行日時を記述した後に実行するコマンドのパスを絶対パスで記述します。
cron例:
30 8 * * * python3 /Users/ss/Desktop/py_pn/ mezamashi.py
これは毎朝8:30にDesktopに配置したPythonプログラムを実行すると言う意味になります。
色んな日時の設定例を載せておきます。
# 毎日24:00
0 0 * * * command
# 毎時5分
5 * * * * command
# 毎週月曜8:10
10 8 * * 1 command
# 毎週金曜21:30
30 21 * * 5 command
# 毎月5日の10:20
20 10 5 * * command
# 毎年12/25日の10:20
20 10 25 12 * command
# 0分、5分、10分、……、55分
*/5 * * * * command
# 1分、6分、11分、……、56分
1-56/5 * * * * command
# 2分、7分、12分、……、57分
2-57/5 * * * * command
# 3分、8分、13分、……、58分
3-58/5 * * * * command
# 4分、9分、14分、……、59分
4-59/5 * * * * command
間隔指定のものは5,10など割り切れるものの方がわかりやすいですね。
後はこれを正しく入力するだけです。
vimの使い方
vimとは何かと言うと、MacやLinuxに備わっているテキストエディターになります。
コマンドラインからの入力はこういったテキストエディターを用いての入力に切り替わるので
操作方法を覚えておかないといけません。
モード
vimには2つのモードがあり通常時のノーマルモードと入力時の入力モードがあります。
どっちのモードか分からなくなったらescキーを入力してノーマルモードに戻りましょう。
まずvimを起動した際のモードはノーマルモードになっていると思います。
ノーマルモードでは行える操作の一部を紹介します。
| 操作 | vim |
|---|---|
| ↑ | k |
| ↓ | j |
| ← | h |
| → | l |
| 一文字削除 | x |
| 入力モードへ | i |
| 次行を新規行として挿入して入力モードへ | o |
| 現在行に新しい行を追加して入力モードへ | O |
| 上書き保存 | :w |
| 名前をつけて保存 | :w ファイル名 |
| 編集終了 | :q |
| 保存して終了 | :wq または :x |
| ファイルを開く | :e ファイル名 |
:コロンをつけて各種キーを入力してエンターキーで実行できます。
試しに入力を抜けてみると
ターミナルの画面に戻ります。
さて入力モードの方の説明に入ります。
crontab -eからクーロンを開くとノーマルモードの状態なので
iを入力して入力モードに移ります。
入力モードに移るとこのような画面になると思います。
この状態で文字を打ち込むことができます。
試しにクーロン設定をしてみましょう。
30 8 * * * python3 /Users/ss/Desktop/py_pn/ mezamashi.py
入力できたら保存を行います。
保存するにはノーマルモードに戻る必要があるのでescキーを押して戻ります。
ノーマルモードに戻ったら、:wqを打ち込んでエンターキーで保存して終了します。
ちゃんと保存できたかを確認してみましょう。
すでに入力ずみのcronがある場合はcrontab -lで閲覧することができます。
$crontab -l
これでクーロンが反映されていることが確認できました。
クーロンの確認
クーロンが動いたかどうかを確認するにはその日時になっていないと確認は難しいです。
初めは日時を2分毎とかすぐ実行できる間隔にしておき、プログラムが動いたかどうかは
実行時間になったらpsコマンドで実行プロセスの確認をするか
ログ出力などをしておき、実行されているかどうかを確認します。
プロセスが立ち上がらなかったり
ログなどが出ない場合は実行されていないことが想定されます。
実行するプログラムのパスの書き方などに誤りがないかを確認してみましょう。
クーロンの読み込み
0からvimを用いて入力するのは始めたの人には容易ではないかと思います。
加えて大量のクーロン設定を行う場合も向いていないため
あらかじめ作成しておいたクーロン設定をファイルから読み込みすることができます。
$crontab ファイルパス
これでファイルから読み込みして設定することができます。
実はcrontabコマンドには-rと言うオプションがあり削除をしてしまいます。
-eと-rは隣同士なので、コマンドの打ち間違えでうっかり削除をしてしまうことがあります。
そのことを防ぐために、あらかじめ設定ファイルを作ってきファイルから読み込みした方が安全です。
実務でクーロンの操作を行う場合はファイル化しておきましょう。
クーロンの書き出し
現在設定されているクーロンの内容はcrontab -lで確認できます。
後はこれをファイルに書き出してあげるだけです。
crontab -l > ファイルパス
$crontab -l > crontab.old
これでファイルに書き出されます。
まとめ
最近ではサーバーレスで定期実行が出来るようなサービスもあったりしますが
サーバー上でプログラムを定期実行させたりする際にクーロンが使われます。
設定の仕方などを覚えておきましょう。
自分のPC上で定期実行をさせたい場合も役立つので覚えておいて損はありません!!
君がエンジニアになるまであと49日
作者の情報
乙pyのHP:
http://www.otupy.net/
Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw
Twitter:
https://twitter.com/otupython