顶级命令重定向

时间:2017-04-26 13:36:32

标签: shell

我正在尝试分析一个随机崩溃的应用程序。要获得该过程的一些细节,我正在实现如下脚本

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

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

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

1 个答案:

答案 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.logtest.log.1等)
  • missingOk copyTruncate:避免一些错误(有关详细信息,请参阅文档)

执行以下操作检查您的文件是否正确:

sudo logrotate /etc/logrotate.d/test

享受。

有关logrotate的更多信息:https://support.rackspace.com/how-to/understanding-logrotate-utility/