読者です 読者をやめる 読者になる 読者になる

ゆっくり技術ノート!

いつかきっとできるだろうよ

crontabでAppleScriptを定期的に実行する

Macで定期的に処理を実行する方法は幾つかあって crontab と launchdがあるらしい launchd は XML で記述するらしくちょっと敷居が高い感じがするので、サクッとcrontabを使うことにする

crontab

crontab(クロンタブ、あるいはクローンタブ、クーロンタブとも)コマンドはUnix系OSにおいて、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。標準入力からコマンド列を読み取り、crontabと呼ばれるファイルにそれを記録する。この記録を元に定時になると、その命令内容を読み取り、実行が行われる。cronという名称はギリシア語のクロノス (χρόνος)に由来するという説がある(Command Run ON の略という説も)。日本ではクーロンという読みが慣習的に広く用いられているが、海外では通常クロンまたはクローンと発音する
via crontab - Wikipedia

crontab コマンド

crontab -e              crontabの設定ファイルをエディタで開く

crontab testcron.txt    テキストファイルを与えると設定ファイルを上書きする

crontab 設定の書き方

分 時 日 月 曜日の順でスペースをあけて指定する

* * * * *  コマンド     1分ごと(毎分)
14 * * * * コマンド     14分になったら(毎時)
* 13 * * * コマンド     13時になったら(毎日)
* * 12 * * コマンド     12日になったら(毎月)
* * * 11 * コマンド     11月になったら(毎年)
* * * * 3  コマンド     水曜日になったら(毎週)

複数指定もできる

0,20,40 * * * * コマンド  0分,20分,40分,になったら
1-5 * * * *     コマンド  1分,2分,3分,4分,5分になったら
*/10 * * * *    コマンド  10分ごと

処理

やりたいのはapplescriptの実行なのでスクリプトのある場所に移動してosascriptというコマンドを使ってapplescriptを実行する

0 * * * * cd /Users/theUser/Desktop/ && osascript test.applescript

とすることでデスクトップにあるtest.applescriptを毎時間実行できる様になった

おまけ

>/dev/null 2>&1をコマンドの後ろに付けるとmailを出力しないようにできる

0 * * * * cd /Users/theUser/Desktop/ && osascript tast.applescript >/dev/null 2>&1

参考ページ

  1. crontabの書き方 — server-memo.net
    • crontabの書き方
  2. crontab -e は「絶対に」使ってはいけない - ろば電子が詰まっている
  3. crontabの設定メモ - ザリガニが見ていた...。
    • 複数コマンドの指定方法と不要なmailをキャンセルする方法

大変参考になりました。ありがとうございます。