部門 > Mac OS X > launchd

cronで設定しようしてもなんだか動いてくれないので、launchdを調べてみた。

Lingon(Mac App Store - Lingon 3)を使うと簡単だと書いてあって、250円くらいなら払ってもいいかなって感じはするけど、大したことやらないのであれば公式ガイド(Daemons and Services Programming Guide: Scheduling Timed Jobs)を見たら行けそうな感じがする。

いま実際に動いてるものは
ls /System/Library/LaunchDaemons
すると確認できる。ここに入ってる*.plistってやつらはXMLで書かれていて、同じように書いてここに置いておけばいいみたい。

というわけで
echo "hoge" > /Users/hoge/Desktop/hoge.txt
というのを~/Desktop/hoge.shとして、これを上のリンク先みたいに書いてみた。

<?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>hoge</string>
        <key>ProgramArguments</key>
        <array>
          <string>/Users/hoge/Desktop/hoge.sh</string>
        </array>
        <key>StartInterval</key>
        <integer>30</integer>
</dict>
</plist>
これを、/System/Library/LaunchDaemons/hoge.plist とした。

...30秒たってもhoge.txtが生成されない。インストールが必要らしい。
launchctl load /System/Library/LaunchDaemons/hoge.plist
としたら、ちゃんと動いた! hoge.plistを修正したら、
launchctl unload /System/Library/LaunchDaemons/hoge.plist
してからもう一度loadする。

loadするときのエラー

loadしようとしたとき、
launchctl: no plist was returned for: hoge.plist
とかってエラーが出ることがある。原因の可能性はいくつかあると思うけど、構文間違いかどうかは
plutil -lint hoge.plist
とすることで教えてくれる。 → osx - What's wrong with my launchctl config? - Ask Different

ところで上のリンクを読んでいたら、7月11日が日曜日のときというのは、
every time July 11 falls on a Sunday
というのか。不思議な言い方。


参考リンク


(OK)

タグ:

Mac
最終更新:2013年11月16日 01:14