繁体   English   中英

标准输出未写入文件?

[英]Stdout not being written to file?

我在这里遇到问题,我不知道发生了什么。

我有一个python脚本test.py连接到我的服务器,获取一些信息,然后打印此信息(本质上是无限循环)。

我也有一个bash脚本starter.sh,如下所示:

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi

当我从终端运行它时,一切都很好并且可以按预期工作。 它只是将一些文本写入控制台。

当我涉及cron工作时,就会发生问题。

我有以下cron工作:

*/1 * * * * /home/user/test/starter.sh >> /home/user/test/log.txt 2>&1

当cron作业运行时(并且我知道它在运行,因为我检查我的服务器并且它接收到连接,对数据的请求,然后发送数据)。

我想记录我的python脚本打印的内容。 但是什么也没有写到日志中? 我该怎么办

编辑:简单地运行python test.py >> echo.txt或python test.py> echo.txt似乎也不起作用。

我正在使用pythons打印功能来打印数据

好的,我似乎已经弄清楚了这个问题(如果其他任何人碰巧也遇到同样的问题)。 问题是在python 2.7中打印不会刷新标准输出。 通过运行python -u test.py可以解决问题并可以正常工作

来自man,这是-u开关的作用:

-u强制完全禁止stdin,stdout和stderr。 在重要的系统上,还将stdin,stdout和stderr置于二进制模式。 请注意,xread-lines(),readlines()和文件对象迭代器(“ sys.stdin中的行”)具有内部缓冲,该缓冲不受此选项的影响。 若要解决此问题,您将需要在“ while 1:”循环内使用“ sys.stdin.readline()”

我也是bash scripting的入门者。

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py >> /home/user/test/log.txt
fi

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM