【问题标题】:launchctl status returns 2launchctl 状态返回 2
【发布时间】:2016-01-06 22:21:11
【问题描述】:

我正在尝试编写一个 launchd 脚本,它将每小时运行一个 Python 脚本。

我在~/Library/LaunchAgents/中创建了以下文件

com.b00tahead.engage-check.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.b00tahead.engage-check</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Library/Frameworks/Python.framework/Versions/3.5/bin/python3</string>
        <string>Projects/engage_scripts/engage_check.py</string>
    </array>
    <key>StartInterval</key>
    <integer>3600</integer>
</dict>
</plist>

然后我运行:

launchctl load ~/Library/LaunchAgents/com.b00tahead.engage-check.plist
launchctl start com.b00tahead.engage-check

当我运行launchctl list 时,它显示的过程为​​:

PID Status  Label
-   2       com.b00tahead.engage-check

我不确定该返回码表示什么。我可以通过终端很好地运行脚本python3 Projects/engage_scripts/engage_check.py

Python 脚本将一些数据写入我桌面上的 .txt 文件。

这是launchctl list com.b00tahead.engage-check 返回的内容:

{
    "LimitLoadToSessionType" = "Aqua";
    "Label" = "com.b00tahead.engage-check";
    "TimeOut" = 30;
    "OnDemand" = true;
    "LastExitStatus" = 512;
    "Program" = "/Library/Frameworks/Python.framework/Versions/3.5/bin/python3";
    "ProgramArguments" = (
        "/Library/Frameworks/Python.framework/Versions/3.5/bin/python3";
        "Projects/engage_scripts/engage_check.py";
    );
};

【问题讨论】:

  • 如果脚本成功运行,它通常会返回状态0。您可以使用命令launchctl list com.b00tahead.engage-check 收集更多关于正在发生的事情的信息
  • 更新结果来自launchctl list com.b00tahead.engage-check

标签: macos launchd launchctl


【解决方案1】:

我的猜测是ProgramArguments 中的参数应该有一个绝对路径(不是相对的,例如Projects/...)。

如果出现错误,应检查系统日志,例如

tail -f /var/log/system.log

或自定义日志可以通过指定这些行来使用:

<key>StandardOutPath</key>
<string>/var/log/myjob.log</string>
<key>StandardErrorPath</key>
<string>/var/log/myjob.log</string>

请参阅:Debugging launchd Jobs section of Creating Launch Daemons and Agents page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 2014-03-17
    • 1970-01-01
    相关资源
    最近更新 更多