tur*_*tle 4 python macos launchd
我想用launchd每分钟运行一个python脚本.我的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.turtle.script.plist</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python</string>
<string>/Users/turtle/Desktop/turtle.py</string>
<string>/Users/turtle/Desktop/data/data.txt</string>
</array>
<key>StartInterval</key>
<integer>60</integer>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
这个plist文件看起来很好,因为我得到以下内容:
plutil -lint com.turtle.script.plist
com.turtle.script.plist: OK
Run Code Online (Sandbox Code Playgroud)
当我从命令行运行脚本时,脚本可以正常工作:
/usr/bin/python /Users/turtle/Desktop/turtle.py /Users/turtle/Desktop/data/data.txt
Run Code Online (Sandbox Code Playgroud)
我通过以下方式加载此plist:
launchctl load -w -F com.turtle.script.plist
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
sudo launchctl load -w -F com.turtle.script.plist
Run Code Online (Sandbox Code Playgroud)
我加载这个作业,python脚本应该写出一个文件到磁盘.但是没有生成任何文件.我检查了这份工作:
sudo launchctl list | grep com.turtle.script.plist
Run Code Online (Sandbox Code Playgroud)
输出是:
- 1 com.turtle.script.plist
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助解决问题吗?
这听起来像是脚本中存在一些环境依赖性 - 实质上,它假定它运行的环境是正确的,当你手动运行它时,而不是当launchd运行它时.在不了解脚本的情况下,很难指出这可能是什么,但我可以建议一些事情要看:
sudo launchctl不是一个更强大的版本launchctl,它做了一些显着不同的事情.你需要弄清楚你想要哪一个,并使用它.
当您launchctl以普通用户身份运行时(例如launchctl load),它会与您的用户启动实例进行交互,以管理启动代理 - 在您的用户会话中以您的用户身份运行的项目.
当您launchctl以root用户身份运行时(例如sudo launchctl load),它会与launchd的系统实例进行交互,以管理Launch Daemons - 以root用户身份在系统上下文中运行的项目.
你必须根据这个脚本的作用来决定哪个是合适的.
检查system.log(您可以使用Console实用程序查看它,或者tail -f /var/log/system.log)查看它是否包含任何指示脚本失败原因的内容.
向launchd .plist添加条目以记录脚本的输出,并查看是否包含任何错误消息或其他错误指示:
<key>StandardOutPath</key>
<string>/tmp/turtle.out</string>
<key>StandardErrorPath</key>
<string>/tmp/turtle.err</string>
Run Code Online (Sandbox Code Playgroud)
编辑脚本以添加调试输出可能会有所帮助,因此您可以更多地了解它是如何工作的(/不工作).
脚本是否依赖于具有特定的工作目录和/或环境变量?如果是这样,请在.plist中添加适当的WorkingDirectory和/或EnvironmentVariables项目.
| 归档时间: |
|
| 查看次数: |
8439 次 |
| 最近记录: |