之前有一个的项目,是用golang写的,为了方便调试,就在golang程序输出一些打印消息。当时把程序放在阿里云的ECS 云服务器(Centos7)上 ,直接在Linux 控制台使用 nohup ./xxx & 执行,此时生成一个 nohup.out文件,如果golang程序打印的消息,就会往该文件就是写了。
目前发现nohup.out 已经很大了,现在需要在不重启Golang程序的情况下,保留nohup.out的5万条历史数据(大概30天的数据),再把nohup.out数据清空掉。
目标
在不重启Golang 程序的情况下,把nohup.out数据清空掉,清空前备份5万条历史记录到另一个文件以便问题回溯。
(1)查看nohup.out文件大小
ls -lh
(2)备份nohup.out最近5万条数据到另一个文件
log=`tail -n 50000 nohup.out`
echo "$log" > nohup_backup.out
备注:本来是保留10W,但是导致变量 log 过大并报错,那先保留5W。
(3)清空nohup.out
cat /dev/null > nohup.out
总结:
日志信息处理有很多解决方案,例如存入数据库、ELK等等。我这里直接存在nohup.out里,是因为程序运行以来,很少出现问题,需要到翻看日志历史记录去排查问题的。