从bash脚本调用时获取Python命令行输出

时间:2014-07-10 09:35:12

标签: python bash shell ubuntu

这可能是一个非常简单的问题。我通过shell脚本在Lubuntu OS(Cubietruck)上调用Python脚本。这是为了在启动时自动化过程(我想维护这个过程)。有没有一种简单的方法来查看Python的输出?目前Python脚本在后台运行,没有终端。我有一些需要检查的错误。脚本是:

#!/bin/sh
python recordSound.py

提前致谢。

5 个答案:

答案 0 :(得分:4)

正确的解决方案可能会使用评论中提出的logging

与此同时,您必须重定向两者标准输出和标准错误流,以便将正常输出捕获为墙正如您的脚本报告的任何错误:

#!/bin/sh
python recordSound.py >> logfile.log 2&>1

请参阅one of the many web pages on that topic以探索shell脚本中可用的各种重定向。


此外,如果您需要在控制台上同时登录实时视图,请使用tee标准命令:

#!/bin/sh
python recordSound.py 2&>1 | tee logfile.log

答案 1 :(得分:1)

直接调用您的脚本。就像你用一个shebang(#!)调用bash脚本一样,你可以使用#!/bin/env python调用你的python脚本。然后,您需要做的就是通过chmod +x yourscript.py提供可执行权限,并像应用程序一样直接调用您的脚本。这样,您就可以看到错误代码。另一种方法是使用记录器模块,这非常适合查看回溯和调试信息。

答案 2 :(得分:0)

我不是bash专家,但我认为这应该有效,因为python打印在标准输出上,除非另有说明:

#!/bin/sh
python recordSound.py >> /tmp/my_python_log.txt
每次python输出东西时,

都会添加行。转到指定的路径以读取结果。如果您想要实时视图,请使用管道'|'重定向输出。

编辑:对于实时视图,您也可以在另一个终端上使用“tail -f /tmp/my_python_log.txt”命令,因为其他解决方案正在运行,这将首先在文件中打印最后10行左右,然后自动添加新行。我喜欢这个命令,非常方便查看小型Apache服务器上的活动。您甚至可以一次观看多个日志!

答案 3 :(得分:0)

一种非常简单的方法是将输出从脚本重定向到文件

#!/bin/sh
python recordSound.py >> logfile.log

请参阅IO redirection

上的文档

答案 4 :(得分:0)

在您的 python 代码中,您可能需要添加 LitDev 以在通过 .sh 运行时立即显示打印消息

print('你的消息',flush=True)

相关问题