CRON を使ってみる

概 要

CRON(クーロン)というジョブスケジューラを使ってみます。WEBサーバーを作って写真を登録する(?)みたいなことをしたいと思っていますが、データのバックアップって大切ですよね。ということで、闇雲にネット検索していたら、“CPコマンドなどを使ってシェルスクリプトを作り、crond を使って決まった日時に実行する” という記載に遭遇しました。ということで今回はCRONを使ってみます。

CRON を使ってみる

(1)crond デーモンの状態確認
CentOS7では、最初からインストールされている様です。PuTTYで接続し、crondデーモンの状態を確認します。

systemctl status crond

上記コマンドを打ち込むと、active(running) となっていますので起動している様です。
【図1】CRONDデーモンの起動状態確認

ついでに、crondデーモンの起動は次のコマンドです。

systemctl start crond

crondデーモンの停止は次のコマンドです。

systemctl stop crond


(2)crontabファイル の編集

crontabファイルを編集し、実行タイミングと実行コマンドやプログラムを設定します。編集はシステム全体( /etc/crontab )とユーザー対応 ( /var/spool/cron/ユーザー名/crontab ) をそれぞれ作成・ 編集する様です。
次のコマンドで “-e” オプションを指定し編集を開始します。括弧内の様に “-u” オプションとユーザー名を指定するとユーザー対応の編集が可能となります。

① crontab -e           ( crontab -u [ユーザー名] -e )

図2‐①の様に入力すると図3の編集画面に切替わります。編集画面で次の様に入力し保存します。(一部全角で書いていますが、実際には全て半角入力) 編集方法は、VIエディターと同じ様な方法で、編集・保存・終了できました。内容は2分間隔で、時間を “/tmp/datefile” に書き込む処理を行うということです。

*/2 * * * * /bin/date >> /tmp/datefile

次に編集内容を確認する為に図2-②の様に “-l” オプションで確認します。下に編集内容が表示されます。

② crontab -l

次にrootユーザーとして設定したcron設定ファイルが存在することを確認します。

③ ls -l /var/spool/cron/*

次に tail コマンドの “-f” オプションで crond デーモンで2分間隔で書き込まれるファイル(/tmp/datefile)を監視します。 図2の通り2分ごとに書き込まれた内容が追加表示されます。

④ tail -f /tmp/datefile

2分ごとにファイルに時間が書き込まれていることを確認出来たら、「Ctrl」+「C」(⑤)で監視を終了します。
最後に “-r” オプションで、crontabファイルを抹消します。但し、データが完全に消去されますので、既に編集データがある場合などには確認が必要です。

⑥ crontab -r

最後に⑥ “-l” オプションでファイルが抹消されていることを確認します。

【図2】コマンド入力状態

【図3】 crontabファイル編集(コマンド入力①の後)

crontabファイル編集

クローンタブ編集について簡単に補足します。次の通り左から分・時・日・月・曜日・実行コマンドを記載します。“*”は全ての数字に一致します。例えば、分に“30”を指定すると毎時30分にコマンドを実行します。

* * * * * コマンド
曜日 実行するコマンド
0-59 0-23 1-31 1-31 0-7

また、“ – ” を使って範囲指定,“ , ” を使って複数指定,“/” を使って間隔指定が可能です。例えば、時間に“14-22 /2”と指定すると14時から22時まで2時間間隔でコマンドを実行します。また、曜日に“1,4” と指定すると月曜日と木曜日にコマンドを実行します。
曜日毎に実行時間が変わる場合などは、複数行に書くことで異なる実行時間を指定することが出来ます。

まとめ

シェルスクリプトなどを勉強し、もう少し複雑な処理を実行できる様にしたいと思っています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です