ストックドッグ

KatoTakahiro。金融系の会社で働くSEが株やPython、その他諸々について書いています。サービスも運営してます→http://fmbrain.work

cronで定期的にフォルダを作成してみる(Ubuntu 16.04)

色々とcronについて勉強したので、今回はcronで一分毎にTestという名のフォルダを作成するまでやってみようと思います。

cronとは

設定したファイルを定期的に実行させるためのツール

crontabに登録されているcronを確認

crontab -e

編集等はvimで行うことになります。
もし、まだcronがひとつも登録されていなければ、no crontab for <ユーザー名> が表示されます。

crontabは /etc の中にあるのですが、私はvimの使い方がわからなかったので、sublimetext(テキストエディタ)に移してから編集していましたが、これではうまくいきませんでした。(編集しても内容が反映されない)

おそらく、編集・実行の権限が与えられていなかったからだと思います。

諦めてvimの使い方をドットインストールで学んできて、ようやく編集することができました。

vimは癖が強すぎるが、慣れれば最高に使いやすいツールになることの片鱗をつかめた!)

そもそもcronが動作しているのかをチェック

sudo service cron status

active(running)が表示されていれば正常に動作しています。

また、cronの動作ログもこれで確認可能です。

基本的にcronの動作ログは /var/log のsyslogファイルに書かれています。

なので。

cd /var/log
cat syslog

で、確認可能ですが、いちいちsyslogを見に行くのも面倒なので、sudo service cron status で確認したほうが楽です。


定期的に実行させるファイルを作成

/home にtest.shというファイルを作成します。

#!/bin/shシェルスクリプトであるということを明示するためのものです。

mkdir Test にしているので、cronが上手く実行されれば/home にTestという名のフォルダが作成されるはずです。

(mkdirでもなくても大丈夫です、今回はcronが動作しているかどうかを確認したいため、適当にmkdirにしました)

#!/bin/sh
mkdir Test

crontabからcronを設定

crontab -e
* * * * * /bin/sh /home/ubuntu/test.sh > /dev/null 2>&1

時間は1毎分に設定しています。

エラーが発生していた場合、すぐに確認できるので。

また、cronによって実行するファイルがシェルスクリプトであることを明示するために /bin/sh を記述しています。

cronでの時間設定の書式は以下のサイトがわかりやすかったです。

qiita.com


これでcronの設定は終わったので、ログを見てみます。

3月 30 23:09:01 tk CRON[4148]: (ubuntu) CMD (/bin/sh /home/test.sh)

CMDとはcronが実行したコードを示しています。

ログを見る限り、cronは正常に実行されています。

ディレクトリを見てみると...

これが...

テンプレート
ピクチャ
test.sh
デスクトップ
ミュージック
ドキュメント
公開
ダウンロード
ビデオ

1分後...

Testフォルダが作成されたので、無事にcronが動作したようです。

Test
ダウンロード
ビデオ
テンプレート
ピクチャ
test.sh
デスクトップ
ミュージック
ドキュメント
公開

MTAというエラーが出た場合

cronはエラーが出た際、メールで通知しようとするのですが、メールの設定を行っていない場合にMTAというエラーが出ます。

postfixなどでメールの設定を行うことでこのエラーは解決できます。

以下のサイトがわかりやすかったです。

ryoichi0102.hatenablog.com

まとめ

今回はcronを動かすまでを最短距離で行ったので、至らない点が多数あります。

cronにはまだまだ工夫の余地があり、以下のサイトがとても参考になります。

dqn.sakusakutto.jp