仮想サーファーの波乗り

仮想サーファーの日常

プログラミング・SNS分析・自動化などに関してよく書く雑記ブログ

Local環境(手元のPC)でタスクを定期実行させるcronの使い方メモ


f:id:virtual-surfer:20190120094359p:plain

cronの使い方に関してちょっとハマったのでメモ。

cronに関して学んだことはこの記事に順次更新していきます。



cronとは?


cronとは、スクリプト(ジョブ)を自動で実行するためのデーモンプロセスのこと。

Local環境(手元のPC)で、スクレイピングの定期実行やファイルデータのバックアップなど、定期的に自動実行したいジョブを管理するときに役立つ。


サーバー上にあるアプリケーションの処理を定期実行するには、HerokuではHeroku Scheduleというアドオンがありますという記事を以前書きました。

www.virtual-surfer.com

同じことがLocal環境でもできる。それがcron。


cronで定期的に実行させた方がいいタスクの例

・特定のWebサイトのデータを毎日1回スクレイピングする
・毎日その日の天気と傘を持っていくべきかをLINEに通知する
・毎時間Amazonの新書データを取得してTwitterに投稿する
...etc


「定期的にファイル実行する」という仕事は人間の仕事じゃないので、プログラムに任せてしまいましょう( ・v・)b



cronの使い方


簡単なファイル出力


現在のディレクトリを確認する。

$ pwd

/Users/username


すでに設定されているcronタスク何があるか確認する。

$ crontab -l

crontab: no crontab for username

「no crontab」となっているので、現状は何も設定されていない。


cronタスクを設定するvi画面を起動。

$ crontab -e

~
~
...
~
"/tmp/crontab.q0vqCn6AY3" 0L, 0C

何も設定していない状態では当然だが、何も書かれていない。


vi画面で「I」をクリックして編集モードにして、cronタスク(文字列をファイル出力)を設定し、「esc」を押して「:wq」でEnterしてファイルを保存して閉じる。

* * * * * python cron_test.py >> crontab_task.log
~
~
...
~
-- INSERT --

ちなみに、「 * * * 」の部分は「分 時 日 月 曜日」を意味している。今回は全てワイルドカード*にしているので、毎分実行されることを意味する。


cronで定期実行する設定をした「cron_test.py」というファイルを作って、文字列出力をする処理を書いて保存。

cron_test.py

print('Hello cron!!')


crontabの設定完了しているか、再度以下のコマンドで確認してみる。

$ crontab -l

* * * * * python cron_test.py >> crontab_task.log

以上のように表示されていれば、crontabの設定できています。


crontabの実行準備完了したので、設定してから1分たつのを待つ...。


crontab_task.logにファイル出力されているはずなので確認してみる。

$ cat crontab_task.log

Hello cron!!

ちゃんと出力されていますね!!


いったんファイルの実行まではできたので、OK。

色々試したらまた更新します。


では!