我创建了一个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>
答案 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>
不是超级优雅,但我希望有所帮助!