从bash脚本调用时获取Python命令行输出
这可能是个非常简单的问题。我在Lubuntu操作系统(Cubietruck)上通过一个shell脚本调用一个Python脚本。这是为了在启动时自动执行这个过程(我想保持这个过程)。有没有简单的方法可以查看Python的输出?目前这个Python脚本是在后台运行的,没有终端。我有一些错误需要检查。这个脚本是:
#!/bin/sh
python recordSound.py
提前谢谢你。
5 个回答
我不是bash专家,但我觉得这样做应该没问题,因为Python默认会把输出打印到标准输出,除非你另有指示:
#!/bin/sh
python recordSound.py >> /tmp/my_python_log.txt
每次Python输出内容时,都会添加新的一行。你可以去指定的路径查看结果。如果想要实时查看,可以使用管道符号'|'来重定向输出。
补充一下:如果想要实时查看,你还可以在另一个终端使用“tail -f /tmp/my_python_log.txt”这个命令,前提是另一个解决方案正在运行。这个命令会先打印文件中的最后10行,然后自动添加新增加的行。我非常喜欢这个命令,它在查看小型Apache服务器的活动时特别方便。你甚至可以同时查看多个日志!
一个非常简单的方法就是把你的脚本输出的内容重定向到一个文件里。
#!/bin/sh
python recordSound.py >> logfile.log
你可以查看关于 输入输出重定向 的文档了解更多信息。
在你的Python代码中,你可能需要加上 flush=True
,这样在通过.sh文件运行时,打印的信息才能立刻显示出来。
比如,你可以这样写:
print('你的信息', flush=True)
直接运行你的脚本。就像用一个特殊的标记(叫做shebang,写作#!
)来运行bash脚本一样,你也可以用#!/bin/env python
来运行你的python脚本。然后你只需要通过chmod +x yourscript.py
来给你的脚本添加可执行权限,这样就可以像打开应用程序一样直接运行你的脚本了。这样做的好处是你可以看到错误代码。还有一种方法是使用logger模块,这个模块非常适合查看错误追踪信息和调试信息。
一个合适的解决方案可能会使用logging
,正如评论中提到的那样。
在此之前,你需要同时重定向标准输出和标准错误流,这样才能捕捉到正常输出和脚本报告的任何错误:
#!/bin/sh
python recordSound.py >> logfile.log 2&>1
可以查看这个主题的许多网页之一,了解从 shell 脚本中可以使用的各种重定向方式。
此外,如果你需要在控制台上同时查看登录信息和实时输出,可以使用tee
这个标准命令:
#!/bin/sh
python recordSound.py 2&>1 | tee logfile.log