簡體   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