概要
いままでcronに触れたことがなかったので、実験的にさわってみようというのがこの記事の主旨です。
内容は初心者向けです。
実行環境
- MacOs High Sierra
- ターミナル
そもそも、Cronとは?
- 設定内容に応じて、定期的にジョブを実行してくれるもの
- crontabというコマンドを用いて①スケジュールと②コマンドを設定できる
※例えば、「毎週月曜〜金曜日の午前3時から4時の間に〇〇.shを実行してください」というようなスケジュールを組むことができる。
やったこと
- シェルスクリプトで超簡単な処理を記述
- crontabでスケジュールを設定
- 実行結果を確認
hoge.shに簡単な処理を記述する
はじめに、簡単な処理をかきます
ターミナル
// 編集画面を開く
$ vim hoge.sh
// 現在日時をテキストファイルにアウトプットする処理をかく
date >> hogelog.txt
~
~
~
"hoge.sh" [New File]
// hoge.shの実行権限を与える
$ chmod 755 hoge.sh
// ついでに、作成したファイルの絶対パスを確認しておく
$ ls -ld $PWD/hoge.sh
-rwxr-xr-x 1 manabee staff 20 Dec 14 10:40 /Users/manabee/hoge.sh
crontabでスケジュール設定する
今回は、"1分間隔"、"毎時"、"毎月"、"土・日曜日"に実行するようにしてみます
設定方法の詳しい説明はこちらを参照しましょう
https://eng-entrance.com/linux-command-crontab
ターミナル
// 設定画面を開く
$ crontab -e
// 以下のように設定(スケジュール + 実行するコマンドのパス)
*/1 * * * 0,6 /Users/manabee/hoge.sh
~
~
~
※ちなみに土曜日、日曜日で設定する際 にはじめ"6,7"で試したのですが、うまくいきませんでした
実行状況を確認する
ターミナル
// 設定しているcronを確認
$ crontab -l
*/1 * * * 0,6 /Users/manabee/hoge.sh
// 出力されたファイルを確認
$ cat hoge.txt
// ↓内容↓
Sat Dec 14 10:40:16 JST 2018
Sat Dec 14 10:41:16 JST 2018
Sat Dec 14 10:42:16 JST 2018
設定した処理が定期実行されていることが確認できました
設定したcronを削除、停止する
ターミナル
// 削除する(設定したものが全て消えてしまうので注意)
$ crontab -r
// 停止するだけなら、#でコメントアウトすればとまる
$ crontab -e
# */1 * * * 0,6 /Users/manabee/hoge.sh
~
~
感想
ターミナルでコマンドを使うことに抵抗?馴れていなかったため、はじめは難しいものかと思っていましたが、意外ととっかかりやすい仕組みだと思いました。