1

基本的なスクリプトを実行するだけの非常に単純な起動デーモン 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 を保存するだけでは機能しません!

4

1 に答える 1