基本的なスクリプトを実行するだけの非常に単純な起動デーモン com.daily.vocab.plist があります。(StartCalendarInterval を使用して) 毎日特定の時刻に実行することになっていますが、それを実現することはできません。オンラインの多くの投稿では、1 ~ 2 分で実行されると書かれていますが、私にとっては実行されることはありません。
テスト中に実行時間を将来の 5 分に設定していましたが、今では毎分 0 秒で実行するように設定されているので、動作させることができます。機能したら、希望する毎日の実行時間に設定します。
このチュートリアルでアドバイスされているように、/Library/LaunchDaemons に保存されます。で手動でロードしましたlaunchctl load /Library/LaunchDaemons/com.daily.vocab.plist
。実際、実行するとロードされていることがわかりますlaunchctl list
。で実行するように手動で指示するとlaunchctl start com.daily.vocab
、期待どおりにすぐに動作します。唯一の問題は、StartCalendarInterval が無視されているように見えることです。Macbook で Mavericks を使用しています。
ファイルは次のとおりです: com.daily.vocab.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>com.daily.vocab</string>
<key>Program</key>
<string>/Users/MGS/developer/projects/vocab-sms/scripts/DEvocab.sh</string>
<key>StartCalendarInterval</key>
<dict>
<key>Second</key>
<integer>0</integer>
</dict>
</dict>
</plist>
理想的には、毎日午前 7 時 15 分に実行して、StartCalendarInterval
代わりにセクションを次のようにしたいと考えています。
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>7</integer>
<key>Minute</key>
<integer>15</integer>
</dict>
StartCalendarInterval を使用して作業するようになった LaunchDaemon の例と、それを機能させるために行ったすべてのステップ (例: running launchctl load x.x.x.plist
) を共有できれば、それは本当に役に立ちます!
解決策: このローカル デーモンは実際にはユーザー エージェントである必要があるため、~/Library/LaunchAgents ディレクトリに保存してそこからロードする必要がありました。そこから、エージェントをアンロードしてエージェントを再ロードする必要もありました。
注: デーモン/エージェントは、アンロード/ロードするまで、launchd で自動的に更新されません。更新された .plist を保存するだけでは機能しません!