gpt4 book ai didi

python - 使用 Python 的 Launchctl 最小工作示例

转载 作者:太空狗 更新时间:2023-10-30 02:21:28 25 4
gpt4 key购买 nike

我想使用 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>

这个 plist 文件看起来不错,因为我得到以下信息:

plutil -lint com.turtle.script.plist
com.turtle.script.plist: OK

当我从命令行运行脚本时,该脚本有效:

/usr/bin/python /Users/turtle/Desktop/turtle.py /Users/turtle/Desktop/data/data.txt

我通过以下方式加载这个 plist:

   launchctl load -w -F com.turtle.script.plist

我也试过:

sudo launchctl load -w -F com.turtle.script.plist

我加载此作业,python 脚本应将文件写入磁盘。但是,从未生成任何文件。我用以下方法检查工作:

sudo launchctl list | grep com.turtle.script.plist

输出是:

- 1 com.turtle.script.plist

任何人都可以帮助解决问题吗?

最佳答案

听起来脚本内部存在一些环境依赖性——本质上,它假定有关其运行环境的某些信息在您手动运行时是正确的,但在 launchd 运行时则不然。在对脚本一无所知的情况下,很难指出这可能是什么,但我可以建议一些要看的东西:

  • sudo launchctl 不是 launchctl 的更强大版本,它做了一些明显不同的事情。你需要弄清楚你想要哪一个,然后使用它。

    当您以普通用户身份运行 launchctl 时(例如 launchctl load),它会与您的 launchd 用户实例交互以管理启动代理——在您的用户 session ,在您的用户身份下。

    当您以 root 身份运行 launchctl 时(例如 sudo launchctl load),它会与 launchd 的系统实例交互以管理启动守护进程——在系统上下文中运行的项目, 作为根。

    您必须根据此脚本的作用来决定哪个是合适的。

  • 检查 system.log(您可以使用控制台实用程序查看它,或 tail -f/var/log/system.log)并查看它是否包含说明原因的内容脚本失败。

  • 将条目添加到 launchd .plist 以记录脚本的输出,并查看其中是否包含任何错误消息或其他错误指示​​:

    <key>StandardOutPath</key>
    <string>/tmp/turtle.out</string>
    <key>StandardErrorPath</key>
    <string>/tmp/turtle.err</string>

    编辑脚本以添加调试输出可能会有所帮助,这样您就可以详细了解它是如何工作的(/不工作)。

  • 脚本是否依赖于特定的工作目录和/或环境变量?如果是这样,请将适当的 WorkingDirectory 和/或 EnvironmentVariables 项添加到 .plist。

关于python - 使用 Python 的 Launchctl 最小工作示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com