生活の跡

個人的な備忘録

Mac で cron を使った自動処理を設定する

概要

Mac で自動処理を設定してみたかったので、cron を使って試しました。

環境

OS:macOS Mojave

自動処理の内容

時刻を毎分ログファイルに追記する(コマンドが単純で確認もしやすいので)。

なお、手動で現在時刻をログファイル(log.txt)に追記するには、ターミナルで次のコマンドを打てばOKです。

$ date >> log.txt

設定手順

1. ターミナルで下記のコマンドを実行

$ crontab -e

2. 空のファイル(/tmp/crontab.〇〇)が開かれる(※1)ので、実行するタイミングと処理内容を記述して保存する

*/1 * * * * date>>log.txt

*/1 * * * *が実行するタイミング(毎分)を表し、そのあとに処理内容date>>log.txtを記述します。
実行するタイミングの書き方については、以下の記事に詳しく書かれています。 qiita.com

(※1) 私の環境ではviエディタで開かれました。viの場合は以下の手順で編集できます。
1. i キーで編集モードに切り替える(ターミナル左下が -- INSERT -- になる)。
2. 処理内容を記述する。
3. escキーでコマンドモードに切り替える(ターミナル左下の -- INSERT -- が消える)。
4. :wq(保存して終了の意味)を入力してreturnキーを押す。
5. 以下のメッセージが表示されたら「OK」を押す。
f:id:ishii-akihiro:20190926120729p:plain

(※2) cron の処理はホームディレクトリで実行されるようです。date>>./log.txtと記述しても、log.txt はホームディレクトリに出力されます。

3. cron 処理が正しく設定されたか確認する

保存すると、ターミナルにcrontab: installing new crontabと表示されます。crontab -lで内容を確認できます。
空のファイルが表示された場合は、正しく設定されていません。記述した内容が不適切な場合は設定できないので、内容に誤りがないか確認しましょう。
今回の例では、>>の前後に半角スペースがあると失敗するようです(下記の記事を読んで気がつきました)。 qiita.com

4. ログファイルが出力されているか確認する。

1分以上待ってから、ホームディレクトリに出力されたログファイルの内容を確認しましょう。

$ cat ~/log.txt

1分ごとに時刻が出力されていれば成功です!

おわりに

本来の目的は FuelPHP の Task との連携なので、これから頑張ります。
なお、crontab コマンドのオプションなどについては、下記の記事がわかりやすかったです。 eng-entrance.com