我使用Python3.6编写了一个简单的HTTP服务器来重定向所有请求。
我写的文件可以找到here https://github.com/kmahyyg/learn_py3/blob/master/antiscanhttp.py
我可以在 Ubuntu 16.04.3 Bash 中的 Win8.1 COMMAND 中看到输出。
但是,无论我尝试下面的任何方法,它都不起作用,日志无法保存到文件中。
nohup python3 ./filename.py > ./logfile 2>&1 &
python3 ./filename.py > ./logfile 2>&1 &
setsid ./filename.py > ./logfile 2>&1 &
我尝试使用:
import sys
logfile = open('logfile.log','w')
sys.stdout = logfile
sys.stdin = logfile
sys.stderr = logfile
它不起作用。
默认情况下,Python 的 stdout 和 stderr 是缓冲的。正如其他响应者所指出的,如果您的日志文件为空,那么(假设您的日志记录正确)输出尚未刷新。
脚本的链接不再有效,但您可以尝试运行脚本python3 -u filename.py
或同等的PYTHONUNBUFFERED=x python3 filename.py
。这会导致 stdout 和 stderr 流不被缓冲。
使用标准库的完整示例http.server
用于从当前目录提供文件的模块:
PYTHONUNBUFFERED=x python3 -m http.server &> http.server.log & echo $! > http.server.pid
所有输出(stdout 和 stderr)都重定向到http.服务器日志,可被尾部写入,服务器的进程ID被写入http.server.pid这样你就可以通过以下方式终止该进程kill $(cat http.server.pid)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)