在屏幕下运行脚本时没有日志文件输出,带有控制台重定向(tee)

在屏幕下运行脚本时没有日志文件输出,带有控制台重定向(tee)

我有一个 python 脚本,它将向控制台写入一些常规日志记录。我已使用典型的python -u jbot.py | tee -a jbot.log.这工作正常,我得到控制台输出和日志文件输入。但是,当尝试在屏幕下运行它时:

screen python -u jbot.py | tee -a jbot.log

我的文件中没有收到任何日志输出。一旦我断开连接screen,该会话的控制台输出是否会被完全抑制,或者是否有办法仍然可以从脚本的 stdout 和 stderr 输入日志文件?

我意识到使用日志记录库可能会解决这个问题(因为无论如何我都会进行筛选),但现在我想坚持捕获控制台输出(如果可能),直到我可以将日志记录模块正确集成到我的代码中。

答案1

你需要做这样的事情:

screen sh -c 'python -u jbot.py | tee -a jbot.log'

基本上,在将 screen 的输出(不是直接的 python 脚本)传输到日志之前。 Screen 接受一个要执行的命令作为其参数,它本身不使用 shell。所以你需要明确地让它运行一个 shell。

另一种选择是使用屏幕的内置输出日志记录;查看该-L选项(也可以通过其 UI 在屏幕内使用)。

相关内容