2013-08-21 66 views
2

任何改變我,我用這個命令的服務器上運行一個python腳本:無法看到的nohup.out

sudo nohup python fetch_script.py & 

它創建的相同目錄nohup.out文件。

幾天後,我回來了,想檢查一下吧,我所做的:

tail -f nohup.out 

它給了我一個結果:

[email protected]:/home/ubuntu# tail -f nohup.out 
8809896 
8809897 
8809898 
8809899 
8809900 
8809901 
8809902 
8809903 
8809904 
8809905 

我等了一點點,但沒有happend。腳本應該發送消息到RabbitMQ並更新計數並打印出來。腳本一直在運行,我知道是肯定的,因爲我可以看到新的消息不斷出現。但是nohup.out卡住了。我還用ls -l命令檢查了它,看看大小是否改變了,但仍然沒有運氣。 你知道可能是什麼原因嗎?我認爲它會最終更新,但不知道需要多長時間。那麼有什麼方法可以不斷更新這個文件嗎?在這種情況下,nice -20會有幫助嗎?

UPDATE

只需旋轉日誌,與/usr/sbin/logrotate等了一下,看到新鮮nohup.out

+0

你確定這個過程還在運行嗎? –

+0

進程正在運行,腳本也在運行 – Vor

回答

4

變化nohup.out文件是由正在被nohup下運行的程序直接寫入,就像普通的shell重定向。如果沒有更新,問題出在Python程序上,而不是nohup本身。

+0

你知道文件('nohup.out')是否會像1G一樣變大,這可能是我在輸出中看到的延遲問題嗎? – Vor

+6

python進程剛決定將其輸出緩衝區刷新到磁盤更有可能。程序經常發生的情況是,如果它們的輸出連接到交互式終端,則它們的輸出是行緩衝的,因此每次寫入一行時都將其刷新到輸出,但如果程序以stdout運行重定向到文件是塊緩衝的,輸出文件更新頻率較低。 – Joni

+1

這是一個非常好的解釋,它可能是一個答案。 – Vor