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

时间:2011-04-25 18:17:39

标签: python launchd startupscript

我创建了一个python脚本,我希望在登录mac时自动运行,并需要一些帮助才能使用Launch Agent来完成此操作。我过去常常使用SO来解决这个问题,所以我认为这是一个值得讨论的地方,但我还是很新,所以我需要一些帮助。

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

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

我现在需要的是启动代理,可以在登录时自动启动此脚本并仍然输出此文本。我已经有一个基本的Launch Agent工作,但它在后台运行脚本,我不再能看到输出。根据我到目前为止的研究,看起来我可以使用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>

1 个答案:

答案 0 :(得分:4)

如果您希望输出显示在终端中,您可以使用启动代理启动Apple脚本,该脚本将打开终端,然后运行您的python脚本:

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

或在applescript / calling窗口中显示文本

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>

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