發現問題的過程是這樣的:
在後臺運行的程序內是用node寫的一個定時器,用於每15min向*.log文件中寫入日誌內容。命令大概是:node
node *.js > *.log &
而且,這個log文件是一天一清空的,也就是說log文件內的內容只保存前一天的。.net
ok,爲了達到這個效果,我就在任務計劃文件/etc/crontab中,加上這樣一條定時命令:日誌
30 9 * * * root cp /dev/null *.log
這裏的意思是,天天9點,用/dev/null文件「空」的特性清除log文件。code
結果,在當天晚上發現,log文件前面出現了不少^@符號,而且以前清空的log文件大小比被清空前還大。crontab
通過各類搜索案例後,發現問題出在「>」與「>>」上面,「>」的意思是將程序輸出的內容覆蓋log文件原有的內容,「>>」的意思是將程序輸出的內容追加到log文件中。get
也就是說,將上面第一條命令中的「>」修改成「>>」就能夠用cp /dev/null *.js或者 echo "" > *.js等方式清空日誌文件了。class
node *.js >> *.log &