在 OSX 上,通过 launchd 运行 offlineimap 无法在睡眠状态下运行

在 OSX 上,通过 launchd 运行 offlineimap 无法在睡眠状态下运行

我并不是对所有事情都很精通launchd,但是我编写了这个plist文件,它会定期运行offlineimap以从 IMAP 服务器获取新邮件:

<?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>net.dpo.offlineimap</string>
    <key>ProgramArguments</key>
      <array>
          <string>/usr/local/bin/offlineimap</string>
          <string>-o</string>
      </array>
    <key>RunAtLoad</key>
      <true/>
    <key>KeepAlive</key>
      <true/>
    <key>ProcessType</key>
      <string>Background</string>
    <key>StartInterval</key>
      <integer>1800</integer>
</dict>
</plist>

该文件位于~/Library/LaunchAgents/net.dpo.offlineimap.plist

问题是当我将计算机从睡眠状态唤醒时,该进程似乎没有被唤醒。正在运行

$ launchctl stop net.dpo.offlineimap
$ launchctl start net.dpo.offlineimap

重新激活它,但这似乎破坏了该KeepAlive选项。

我尝试使用

<key>KeepAlive</key>
  <dict>
    <key>SuccessfulExit</key>
      <true/>
    <key>NetworkState</key>
      <true/>
  </dict>

但我观察到了同样的行为。我在 OSX 10.9 上。我~/.offlineimaprc没有使用该autorefresh选项。

plist文件有什么问题吗?

提前致谢!

答案1

好吧,我可能误解了 的意思KeepAlive。事实证明自制分发一个可以完成以下工作的plist文件:offlineimap

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <false/>
    <key>Label</key>
    <string>homebrew.mxcl.offline-imap</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/opt/offline-imap/bin/offlineimap</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
    <key>RunAtLoad</key>
    <true />
    <key>StandardErrorPath</key>
    <string>/dev/null</string>
    <key>StandardOutPath</key>
    <string>/dev/null</string>
  </dict>
</plist>

守护进程现在可以睡眠了。

相关内容