发现问题的过程是这样的:
在后台运行的程序内是用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 &