需要帮助在Mac上使用Launch Agent让Python脚本启动并将输出发送到窗口

3 投票
1 回答
1394 浏览
提问于 2025-04-16 16:23

我写了一个Python脚本,希望在我登录Mac时自动运行,但我需要一些帮助来使用Launch Agent来实现这个功能。我在Stack Overflow上查了很多资料,才做到这一步,所以我觉得这里是问问题的好地方,但我对这个还不是很熟悉,所以需要一些帮助。

这是我目前的进展和我还需要的东西:

我有一个可以在终端运行的Python脚本。每当它做一些重要的事情时,它会定期在终端窗口输出文本(使用Python的'print'命令)。它还会在其他地方创建一个日志,但我也希望在一个保持打开状态的窗口中实时更新这些信息。

现在我需要一个Launch Agent来在登录时自动启动这个脚本,并且仍然能够输出这些文本。我已经让一个基本的Launch Agent工作了,但它在后台运行,我看不到输出。根据我目前的研究,似乎可以在Launch Agent的.plist文件中使用“StandardOutPath”这个关键词来重定向输出?我对这些程序中的stdout/stdin/stderr还不够了解,所以不太明白这一切是怎么运作的,但我希望能把输出重定向到一个xterm窗口或类似的地方。

我找不到这种情况的好例子,所以可能还有更好的方法,而我只是没有找到正确的搜索内容。任何关于这一切是如何运作的帮助或解释都将非常感激。

更新:我的工作中的Launch Agent .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.name.WVCS-0.1</string>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>/Path/to/StartupScript</string>
    </array>
</dict>
</plist>

1 个回答

4

如果你想让输出在终端上显示,可以使用启动代理来启动一个苹果脚本,这个脚本会打开终端,然后运行你的Python脚本:

tell application "Terminal"
    activate
    do script "/usr/bin/python WVCS-0.1.py"
end tell

或者在苹果脚本/调用窗口中显示文本

tell application "Terminal"
    activate
    do shell script "/usr/bin/python WVCS-0.1.py"
end tell

然后修改你的plist文件,使其

<array>
    <string>osascript</string>
    <string>/path/to/that/script</string>
</array>

虽然这不是特别优雅,但希望能对你有所帮助!

撰写回答