黄昏より暗きもの、血の流れより赤きもの

黄昏より暗きもの、血の流れより赤きもの

自分の好きな事を好きなように書いて行きます。

UNIX/Linuxに慣れよう(1):APIのデータを定期的に収集するための「crontab」の使い方

UNIX/LinuxLAMP環境に慣れ親しむ為の記事第1弾。今週はまずタスクを定期実行するために必要なcrontabについて説明していきます。

本記事の想定する読者層

尚本記事は、以下の1〜3を満たす読者を想定しています。

1.max OS X(ターミナル)を含むUNIX/Linuxをインストールした事がある。又はVPSサーバーや学校や実務で使った事がある。
2.MacPorts、Homebrew、yum、apt-getなどのパッケージ管理ソフトを使い、各種ソフトウェアやミドルウェアなどをインストール出来る。
3.「UNIXの部屋」等のレファレンスサイトの情報を見つつ、ls、cd、pwdと言ったコマンドが使う事が出来る。

crontabの使い道について

さて、ここからが本題です。crontabは特定のタスクを定期的に実行するのに使うコマンドです。例えば「○○時△△分に□□と言うサイトから株価の情報を取って来る」「○○時△△分に特定のデーターベースやファイルをバックアップする」ときに使う事ができます。今回はcrontabのセットの仕方や注意点について話そうと思います。

crontabでよく使うコマンド

まずUNIX/Linux上でcrontabを実行する上で必要な2つのコマンドは以下になります。

crontab -l:「ls -l」と同じように、現状設定されているcrontabの一覧を確認できる
crontab -e:crontabの設定ファイルを編集する

crontabをセットする

今度はcrontabをセットする方法について話します。自分の場合crontab -eを使うので、crontab -eを用いて設定する方法を説明します。以下のように「分、時、日、月、曜日 コマンド」の順に書いて行きます。

分 時 日 月 曜日 <コマンド>

例えば毎日12:00に実行したい場合は、以下のようになります。このとき毎時、毎分などは*を使って調整します。

00 12 * * * <コマンド>

<コマンド>が正しいか確認するためのコマンドを書く

例えば毎日12時に1回コマンドを実行するコマンドの場合、実際に正しくコマンドが実行されてるか確認しにくい場合があります。筆者も24時間に1回実行するcronを書いていて、<コマンド>が間違っていたが為にcron動かないと言う事がありました。
ここからはその<コマンド>が正しいか確認の方法について話します。

1.短い時間で一旦実行してみる

まず1分おきなど短い時間帯でcrontabコマンドを実行してみます。


f:id:program_study:20141004184458p:plain
図1:コマンドが正しいかの確認用スクリプト


上記はpixivから特定のタグ情報を持つ、イラストの投稿数を収集するPHPスクリプト(pixiv_lovelive.php)であり、これを24時間おきに実行することで1日における投稿数の推移を調べようとしたものです。
php以下の実行するファイルのパスが間違っていないかを調べる為に、3行目〜4行目のように確認用のスクリプトを追加しました。

2.cronから送られて来るメールを使って、動作しているか確認する

次にcronから送られて来るメールを使って、動作しているか確認してみましょう。通常cronから送られてくるメールは/var/mail/ユーザー名保存されています。そこで「cat /var/mail/ユーザー名」と入力して確認してみましょう。catにていっぱい情報が出て来るのが嫌な場合は、定期的に削除するか、viなどのエデイターで見てみると良いと思います。


f:id:program_study:20141004184244p:plain
図2:cronの設定を間違えた時の/var/mail/root/の表示例

上記は過去、cronでコマンドを実行するファイルのパスの設定を間違えて実行されない失敗をした時のものです。この為pixivの投稿数の収集が数日間ストップしてしまった事があります。

特に環境の移行時などフォルダーの移動等が行なわれると言った場合は、設定までし直す必要があるのでご注意下さい。事前に現状の問題点は何か?それに対して何を行えばよいか?をまとめておくなどの準備をしておく事も運用上非常に大切です!。昨今Yahooメールのような重大事故が起りましたが、そうならない為にも日々の計画を怠らずに運用していきましょう。

おまけ

そういえば、データ分析がやりたいと思ってラブライブ!のpixiv投稿数を調べる事がきっかけでサーバーを操作する事を覚えました。良くやるのはキャラクターが誕生日を迎えたとき、どれだけ投稿されるかを調べたりします。下は南ことりの誕生日記念の場合です。


f:id:program_study:20141004212550p:plain

上記は絵姫みかん(@ehime)さんのイラストです。おかげさまでかわいらしいゲームの成績画面を完成させることができました。ありがとうございます。

こうして収集して得られたデータと、pixivから絵師さんの絵を借りてスライドを作ったり、遊ばせて頂いております。絵が苦手なんで色んなイラストレーターさんと仲良くなって、自分の企画の絵を書いてもらえたらなあと思って。

さらにアニメファンを巻き込む事でこういうジャンルに興味を持ってもらえたらなあと思いますし、何より俺自体もアニメを通して色んな人とつながるきっかけになればと思います。

さて最近ではデータを集計すると言うよりも、それに伴うサーバーの運用のやり方を覚える目的でこれを続けています。

又本記事作成に当たり数多くのサイトやブログを参考にさせて頂きました。簡単に説明したり、省略して説明した箇所もあり、詳しく知りたい場合は以下も合わせて読んでみて下さい。

以下も合わせて読みたい!