Automatorのワークフローをcalender.appで定期実行する際の課題
- Automatorのワークフローを定期実行する場合、通常calender.appを利用する。
- しかし、Macのcalender.appは非常に不安定(調子が悪いと実行されなかったりする)、かつ毎時間実行させたい場合などに設定が煩雑になる。
- 対策として、Macではlaunchdという定期実行の仕組みがあるのでこれを利用することで解決できる。
- launchdの登録は、LaunchControlというGUIツールが非常に便利。
- 言いたいことは以上で、あとは蛇足。
launchdとは
- OSXにおいて、cronに変わってジョブ管理する仕組み。
- Windowsにおけるタスクスケジューラーのように、OSレベルですべてのジョブを監視しており、非常に堅牢。かつ柔軟に設定が可能。
launchdの基本的な使い方
基本的な使い方
- .plistというファイルをxml形式で記述
-
launchctl load ~/Library/LaunchAgents/xxxxx.plist
でlaunchdに登録
課題
- xmlで記述が必要かつ書式を覚えなくてはならず面倒
- かんたんに利用したい場合は、LaunchControlというGUIで登録できるツールが利用できる
- 以下はLaunchControlを利用した登録方法
LaunchControlでのAutomatorの登録方法
-
まずAutomatorのワークフローを.Appでアプリとして登録
-
LaunchControlにて、
/usr/bin/open -W 登録したいアプリのパス
でプログラムを指定 -
あとは定期実行のインターバルを指定すればOK
10秒からインターバルで指定できる他、毎月、毎週、毎日、毎時等細かく指定が可能
以上
ひとこと
- Automatorのワークフローはcalender.appで定期実行していたが、ちょっとPCで重い処理を行っていると、指定した時間に始まらなかったりして非常に困っていた。PCのスペックによる?
- .appのアプリを指定する方法がすぐにわからずハマった。参考のlaunchd.infoドキュメントを読み解いて解決
参考