我正在尝试分析一个随机崩溃的应用程序。要获得该过程的一些细节,我正在实现如下脚本
procID=$(ps -aef|grep app|awk '{print $2}')
top -p $procID -b -d 10 > test.log
在这种情况下,top命令将每10秒执行一次并写入test.log
。计划无限期地运行它,但我想在每次top命令为其写入一些值时清除test.log
的内容。如何相应地修改脚本?
答案 0 :(得分: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 ...
:使用给定的权限创建新文件(用您的用户组和用户名替换somegroup someuser
)rotate 4
:保留最后4个日志文件(test.log
,test.log.1
等)missingOk
copyTruncate
:避免一些错误(有关详细信息,请参阅文档)执行以下操作检查您的文件是否正确:
sudo logrotate /etc/logrotate.d/test
享受。
有关logrotate的更多信息:https://support.rackspace.com/how-to/understanding-logrotate-utility/