Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否未将标准输出写入文件?_Python_Bash_Cron - Fatal编程技术网

Python 是否未将标准输出写入文件?

Python 是否未将标准输出写入文件?,python,bash,cron,Python,Bash,Cron,我这里有点问题,我不知道发生了什么 #!/bin/bash if [ ! `pgrep python` ]; then cd /home/user/test python test.py fi 我有一个python脚本test.py,它连接到我的服务器,获取一些信息,然后打印这些信息(本质上是在无限循环中) #!/bin/bash if [ ! `pgrep python` ]; then cd /home/user/test python test.py

我这里有点问题,我不知道发生了什么

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
我有一个python脚本test.py,它连接到我的服务器,获取一些信息,然后打印这些信息(本质上是在无限循环中)

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
我还有一个bash脚本starter.sh,如下所示:

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
当我从终端运行它时,一切正常,工作正常。它只是将一些文本写入控制台

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
当我涉及cron作业时,问题就出现了

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
我有以下cron工作:

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
*/1 * * * * /home/user/test/starter.sh >> /home/user/test/log.txt 2>&1
当cron作业运行时(我知道它在运行,因为我检查了我的服务器,它收到一个连接、一个数据请求,然后发送数据)

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
我想记录我的python脚本打印的任何东西。但是没有任何东西被写入日志??我该怎么办

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
编辑:简单地运行python test.py>>echo.txt或python test.py>echo.txt似乎也不起作用

#!/bin/bash

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

我正在使用pythons打印函数打印数据

好的,我似乎已经解决了这个问题(如果其他人碰巧有同样的问题)。问题是pythons 2.7中的打印不会刷新标准输出。通过运行
python-u test.py
这解决了问题,工作正常

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
从man来看,-u开关的作用如下:

#!/bin/bash

if [ ! `pgrep python` ]; then
    cd /home/user/test
    python test.py
fi
-强制标准输入、标准输出和标准输出完全无缓冲。打开 重要的系统还包括stdin、stdout和stderr 二进制模式。请注意,xread中有内部缓冲- lines()、readlines()和文件对象迭代器(“用于 sys.stdin”),不受此选项的影响。要正常工作 在这方面,您需要在内部使用“sys.stdin.readline()”
一个“while1:”循环

我也是@bash脚本的初学者。我想应该可以

#!/bin/bash

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

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

python test.py>>echo.txt不起作用,但python test.py>>/home/user/echo.txt起作用