【问题标题】:Logs extracting, limiting cpulimit日志提取,限制 cpulimit
【发布时间】:2015-06-29 06:10:13
【问题描述】:

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

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

【问题讨论】:

  • 有什么消息吗?没人会帮忙吗?

标签: sed grep nice


【解决方案1】:

摆脱所有磁盘 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 脚本中:我现在没有时间帮助你。

【讨论】:

  • ./IP.sh:第 2 行:意外标记附近的语法错误 (' ./IP.sh: line 2: nice -20 ('
  • 我在 2 天前更新了我的答案。您应该已经收到有关它的通知。
  • 谢谢。我还需要写其他东西吗? ./script.sh {date} 因为我有以下信息: sh: -c: option requires an argument
  • 我的错误,删除-c
猜你喜欢
  • 2019-05-03
  • 2018-03-14
  • 1970-01-01
  • 2011-06-22
  • 2014-08-01
  • 2017-07-08
  • 1970-01-01
  • 2014-07-27
  • 2011-03-05
相关资源
最近更新 更多