Edited at

launchd管理ツールのLaunchControlが非常に便利

More than 1 year has passed since last update.

Macで定期実行する場合、cronではなくlaunchdを使ったほうが良いと言われています。これはlaunchdの豊富な機能が使えることやスタートアップのデーモンなどと一緒に一元管理できることなどが理由だと思います。しかし、launchdは、XMLの読み辛い書式や、編集毎のlaunchctrl load/unloadの手間、成功/失敗の判断、デバッグが難しいなど、触ってみて挫折した人も多いのではないでしょうか。

私はギリギリのところでLaunchControlという有償のGUIツールを発見して、挫折を免れました。このツールが非常に便利だったので簡単に紹介します。これを使い始めてから、launchdが好きになりました。


環境


  • OS X El Capitan 10.11.3


使い方


画面の説明

左ペイン: ~/Library/LaunchAgentsに配置してある各タスク

中ペイン: タスクの詳細

右ペイン: launchdの設定


タスクの追加

左下の+ボタンからタスクを追加します。追加後、右ペインから各設定をドラッグアンドドロップで追加できます。追加した設定が誤っている場合は警告が表示されます。

1.gif

このGIFで作成したタスクは以下の内容で保存されています。


~/Library/LaunchAgents/local.helloworld.plist

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.job</string>
<key>ProgramArguments</key>
<array>
<string>echo</string>
<string>helloworld</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardErrorPath</key>
<string>/tmp/local.job.stderr</string>
<key>StandardOutPath</key>
<string>/tmp/local.job.stdout</string>
</dict>
</plist>



タスクの実行

左ペインからタスクを選択してCommand+Shift+Tでタスクを実行できます。これは launchctl start と同じです。

上記のGIFで作成したlocal.helloworldを実行した場合、stdoutのパスに結果が出力されています。

$ cat /tmp/local.job.stdout

helloworld