【问题标题】:Execute python from bash and see its log on terminal从 bash 执行 python 并在终端上查看它的日志
【发布时间】:2016-02-04 12:44:04
【问题描述】:

我有以下几点:

  1. main.py python 脚本在运行时写入 main.log。
  2. 我正在写一个 sh 文件。

我想从 sh 文件执行 python 脚本,并在终端窗口中查看执行时写入 main.log 文件的所有日志。

目前我通过打开一个终端并执行脚本并打开另一个终端并编写来做到这一点

tail -f main.log.

谢谢。

【问题讨论】:

  • 只需在用于启动 python 脚本的命令后使用& 即可将其作为后台进程启动。然后,您可以在同一终端中tail -f
  • 您可以更改您的脚本以登录到标准输出吗?如果需要,您可以稍后将输出重定向到终端和文件:python main.py | tee main.log.
  • @J.F.Sebastian:你说得对,已经完成了。

标签: python linux bash logging


【解决方案1】:

只需在用于启动 python 脚本的命令后使用& 即可将其作为后台进程启动。然后,您可以在同一终端中tail -f

【讨论】:

  • 我仍然有一个问题,我制作“sudo python3 ... & sudo tail -f Main.log”,它完成了工作并将日志显示到终端。问题是,在这个命令之后,我必须在脚本的 continue 中运行另一个命令,但是 tail -f 运行没有结束并且脚本中的下一个命令没有被执行。我该如何解决?谢谢。
  • 您可能应该阅读一些 bash 脚本教程。
【解决方案2】:

我过去曾使用nohup 命令实质上断开与进程的连接并让它在后台运行。语法类似于nohup <program execution and options> > main.log &

那你可以tail -f main.log实时观看更新。

我遇到了nohup 的问题,其中 .sh 要么无限运行,要么有语法错误,所以在运行之前一定要检查正确性。除非您将语句的结尾更改为 2>&1 & 以使 stderr 重定向到 stdout,否则您可能不会明白这一点,但由于您正在运行 python 脚本,我认为这对您没有帮助.

最后,你可以杀死nohup创建的进程,方法是杀死命令给你的PID,或者使用ps -ef | grep <main.log>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2012-12-26
    • 2013-12-24
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多