0
import os
import sys
from time import sleep
soft = 'link.lnk'
fd_soft = open(soft, 'a');
i = 0;
while 1:
try:
line = 'the count is %d' %(i)
print line
fd_soft.write(line);
i += 1;
sleep(1);
fd_soft.flush()
except KeyboardInterrupt:
print "interrupt ctrl c"
fd_soft.close()
sys.exit(0)
link.lnk是一個到old.txt文件的軟鏈接。 該腳本將打開軟鏈接並每秒向其寫入一個數字。
在運行時我改變link.lnk指向一個新的文件,Python無法識別軟鏈接變更
ln -sf new.txt link.lnk
,因爲我想寫信給new.txt,但是過程仍然保持寫舊文件。
謝謝,我想這和它的作品,但不會有是性能命中,我寫一個程序,也許可以記錄每分鐘 –
100線那麼在這種情況下,你應該建立在你的代碼中的信號處理程序來監聽SIGHUP信號,並關閉文件句柄,可能等待一秒鐘,然後打開一個新的文件句柄,並繼續在其日誌記錄,這樣就可以抱到老的文件句柄,只有當您收到開放的SIGHUP信號insetad放棄和關閉每寫。無論什麼改變你的符號鏈接都應該在它改變符號鏈接之前發送一個SIGHUP到你的python進程。這是logrotate的基本思想。在蟒蛇在這裏的信號處理更多信息:https://pymotw.com/2/signal/ –
好主意,但我不能讓到日誌編寫應用程序的任何變化,生病可能使用類似日誌輪播 –