2017-04-26 119 views
0

我试图分析随机崩溃application.To获得过程中的一些细节我在执行类似下面top命令重定向

procID=$(ps -aef|grep app|awk '{print $2}') 

top -p $procID -b -d 10 > test.log 

脚本在这种情况下top命令将每10秒执行和写到test.log。计划无限期地运行它,但是我想在每次top命令写入一些值时清除test.log的内容。我怎样才能相应地修改脚本?

+0

冲出来,你是什么意思? – Derlin

+0

我的意思是每次清除test.log的内容。我不想让test.log的内容变得如此之大。 – user1495948

+0

为什么不使用'logrotate'来避免你的测试文件增长?因为如果你每次重写,你的日志将只是一个反映到顶部命令的结果... – Derlin

回答

0

为了避免您的日志变得过大,建议您改用logrotate。简而言之,logrotate会创建一个cronjob,用于根据条件(每天一个文件,当文件达到给定大小时旋转等)“旋转”日志文件。您也可以选择保留X最后一次旋转的日志。

这是用于lastmessage和其他Linux的日志文件(因此.log.1.log.2等)

这里是使其工作有一个基本的方法:

创建一个配置你的档案在/etc/logrotate.d。例如:

# /etc/logrotate.d/test 
/var/log/test.log { 
    size 4M 
    create 770 somegroup someuser 
    rotate 4 
    missingok 
    copytruncate 
} 

什么,它说:

  • size 4M:它的大小达到4M后旋转文件
  • create ...:创建新的文件给定permisions(由你所在的用户组和用户名替换somegroup someuser
  • rotate 4:保留最后4个日志文件(test.log,test.log.1等)
  • missingOk一个copyTruncate:避免一些错误(详情参见该DOC)

检查你的文件是正确的,通过执行:

sudo logrotate /etc/logrotate.d/test 

享受。

更多关于logrotate:https://support.rackspace.com/how-to/understanding-logrotate-utility/