是否可以隐藏像这样启动的Python脚本的每个输出:
python myscript.py&
我尝试使用
python myscript.py& > log.txt
但是我得到了一个输出。如果没有“&”,我就得不到它。
答案 0 :(得分:2)
> log.txt
仅重定向写入stdout
的输出。要完全捕获所有可能的输出,您还需要重定向stderr
:
python myscript.py > log.txt 2>&1 &
请注意,在重定向之后,将命令放在后台的&符号在末尾。请参阅Bash编程中的All about redirection - 简介HOWTO。
在您的特定情况下,您正在启动Flask服务器; Flasks使用Python logging
框架,默认配置是根据StreamHandler
class创建一个记录器,输出到stderr
,而不是stdout
。
您可以使用logging
框架以不同方式配置日志记录;例如,您可以设置不同的处理程序以记录到特定文件,而不是使用重定向。有关详细信息,请参阅logging HOWTO documentation,以及Flask logging documentation。
答案 1 :(得分:0)
它无法正常工作,因为&
之后myscript.py
告诉你的shell为该命令打开一个单独的子进程,并且没有通过命令行的其余部分。
你需要传递&在末尾。
python myscript.py > log.txt &
答案 2 :(得分:-1)
我终于找到了问题:"&"必须在最后一行。