0

我正在尝试找出我第一次尝试使用 launchd 安排的更大工作的问题所在。所以我做了我能想到的最简单的python文件print 'running test',给它命名com.schedulertest.plist,然后像这样制作了一个plist文件:

<?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>Label</key>
    <string>com.schedulertest.py.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>arch</string>
        <string>-i386</string>
        <string>/usr/bin/python2.7</string>
        <string>/Users/user/Documents/Python_Alerts_Project/schedulertest.py</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>60</integer>
</dict>
</plist>

然后我将其保存$HOME/Library/LaunchAgents/并运行:

launchctl load com.schedulertest.plist

我应该每 60 秒从我的 py 脚本中获取打印输出,对吗?不过我什么也没看到——我的脚本或流程中是否有明显的错误?

4

2 回答 2

1

所以答案没什么大不了的,但它可能会帮助其他人分享解决方案。我只是忘记了,就像我们在几个 virtualenvs 中移动时一样,我在哪个 python 中。如果您遇到问题并且您的.plist脚本看起来格式正确,那么运行which python等并检查结果与您在程序参数中列出的路径。

于 2013-07-18T06:14:19.563 回答
0

故障排除

  • 要调试.plist,您可以检查日志是否有任何错误,例如

    tail -f /var/log/system.log
    

    要指定自定义日志,请使用:

    <key>StandardOutPath</key>
    <string>/var/log/myjob.log</string>
    <key>StandardErrorPath</key>
    <string>/var/log/myjob.log</string>
    
  • 要查找作业的最新退出状态,请运行:

    launchctl list com.schedulertest.plist
    
  • 要确保语法正确,请使用plutil命令。

请参阅:创建启动守护程序和代理页面的调试launchd作业部分

于 2018-01-11T22:25:49.343 回答