发现问题的过程是这样的:
在后台运行的程序内是用node写的一个定时器,用于每15min向*.log文件中写入日志内容。命令大概是:node *.js > *.log &
并且,这个log文件是一天一清空的,也就是说log文件内的内容只保存前一天的。
ok,为了达到这个效果,我就在任务计划文件/etc/crontab中,加上这样一条定时命令:
30 9 * * * root cp /dev/null *.log
这里的意思是,每天9点,用/dev/null文件“空”的特性清除log文件。
结果,在当天晚上发现,log文件前面出现了很多^,并且之前清空的log文件大小比被清空前还大。
经过各种搜索案例后,发现问题出在“>”与“>>”上面,“>”的意思是将程序输出的内容覆盖log文件原有的内容,“>>”的意思是将程序输出的内容追加到log文件中。
也就是说,将上面第一条命令中的“>”修改为“>>”就可以用cp /dev/null *.js或者 echo "" > *.js等方式清空日志文件了。
node *.js >> *.log &