3

我创建了一个 python 脚本,希望在我登录 Mac 时自动运行,并且需要一些帮助来使用启动代理来执行此操作。到目前为止,我已经广泛使用了很多东西,所以我认为这是要问的地方,但我对此还是很陌生,所以我需要一些帮助。

这是我到目前为止所拥有的以及我仍然需要的:

我有一个可以从终端运行的 python 脚本。只要它做一些重要的事情(使用 python 'print' 命令),它就会定期将文本输出到终端窗口。它还在其他地方创建了一个日志,但我也希望在一个保持打开的窗口中进行实时更新。

我现在需要的是一个启动代理来在登录时自动启动这个脚本并且仍然输出这个文本。我已经得到了一个基本的启动代理,但它在后台运行脚本,我再也看不到输出了。根据我目前的研究,看起来我可以使用 Lauch Agent .plist 中的“StandardOutPath”关键字来重定向此输出?我还不太了解这些程序中的 stdout/stdin/stderr 以了解所有这些是如何工作的,但我希望基本上将这个输出重定向到 xterm 窗口或类似的窗口。

我在任何地方都找不到这类事情的好例子,所以可能有更好的方法来做到这一点,而我只是没有在寻找正确的事情。任何有关这一切如何工作的帮助或解释将不胜感激。

更新:我的工作启动代理 .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>
4

1 回答 1

4

如果您希望输出出现在终端中,您可以使用 Launch Agent 启动一个 Apple 脚本,该脚本将打开终端,然后运行您的 python 脚本:

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

或在 applescript / 调用窗口中显示文本

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>

不是超级优雅,但我希望这会有所帮助!

于 2011-04-26T02:57:15.917 回答