日志提取,限制cpulimit

时间:2015-06-29 06:10:14

标签: sed grep nice

我有以下用于提取日志的脚本。 需要使用cpulimit进行工作,以免过载服务器。有人可以帮忙吗?

{{1}}

1 个答案:

答案 0 :(得分:0)

摆脱所有磁盘IO将有很大帮助:

nice -20 sh  <<'END_SCRIPT' > /tmp/log.txt
    zcat /var/detail-${date}.gz | 
    sed '/./{H;$!d;};x;/46.241.178.96/!d' |
    sed -n '/Acct-Status-Type/,/Called-Station-Id/p' |
    sed '/Acct-Status-Type/{x;p;x;}' |
    grep -Ev '(Acct-Authentic|Acct-Input-Octets|Acct-Input-Gigawords|Acct-Output-Octets|Acct-Output-Gigawords|Acct-Input-Packets|Acct-Output-Packets|Acct-Session-Time)' |
    sed 's/^[ \t]*//;s/[ \t]*$//' | 
    paste -s -d ',' | 
    sed -e 's/,,/\n/g' \
        -e 's/^[,]*//;s/[,]*$//' \
        -e 's/Acct-Status-Type = //' \
        -e 's/User-Name = //' \
        -e 's/Event-Timestamp = //' \
        -e 's/Acct-Terminate-Cause = //' \
        -e 's/Framed-IP-Address = //' \
        -e 's/Called-Station-Id = //' |
    awk -F"," '{ print $3 "," $1 "," $2 "," $6 "," $5 "," $4}' | 
    sed -e 's/"//g' | 
    sed -e 's/,,/,/g' 
END_SCRIPT

除zcat之外的所有命令都可以合并为一个awkperl脚本:我现在没有时间帮助您。