2015-06-29 3 views
0

У меня есть следующий скрипт для извлечения журналов. Нужно сделать работу с помощью cpulimit, чтобы не перегружать сервер. Может ли кто-нибудь помочь?Извлечение журналов, ограничение 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 
+0

любые новости? никто не поможет? – user37033

ответ

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 могут быть объединены в единый awk или perl сценарий: У меня нет времени на помогите вам с этим прямо сейчас.

+0

./IP.sh: строка 2: ошибка синтаксиса около неожиданного токена '(' ./IP.sh: строка 2:' nice -20 (' – user37033

+0

, конечно, я обновлю. –

+0

любые новости? Пожалуйста, обновите. .. – user37033

Смежные вопросы