[Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Moderatorzy: Moderatorzy, Administratorzy
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
No Twoja propozycja z 2 potokami jest multi wydajna...
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Słucham? Mniej wydajne? Wykonać jedną komendę zamiast przekazywać strumień z jednego grepa do drugiego? Do not be ridiculous...
Porównanie w czasie wykonania
Nawet nie chce mi się komentować dalej.
Porównanie w czasie wykonania
Kod: Zaznacz cały
Valheru@webster:~ # time cat /var/log/messages | grep sshd | grep Failed
Nov 26 13:17:37 webster sshd[8341]: Failed password for root from 127.0.0.1 port 57227 ssh2
real 0m0.139s
user 0m0.007s
sys 0m0.005s
Valheru@webster:~ # time grep -w 'sshd\[\|Failed password for' /var/log/messages
Nov 26 13:17:37 webster sshd[8341]: Failed password for root from 127.0.0.1 port 57227 ssh2
real 0m0.024s
user 0m0.023s
sys 0m0.000s
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Kod: Zaznacz cały
time cat plik.log | grep sshd | grep Failed
real 0m0.118s
user 0m0.108s
sys 0m0.035s
Kod: Zaznacz cały
time grep -w 'sshd\[\|Failed password for' plik.log
real 0m0.218s
user 0m0.210s
sys 0m0.007s
Kod: Zaznacz cały
uname -a
Linux blablabla 2.6.33.4 #3 SMP Wed May 12 23:13:09 CDT 2010 x86_64 Intel(R) Core(TM) i5-3330 CPU @ 3.00GHz GenuineIntel GNU/Linux
ps
Nie wiem po co toczyć piane zamiast pomóc gościowi w wątku?
No ale na każdym forum znajdą się eksperci którzy niczego nie wyjaśniają tylko chcą brylować.
Jesteś taki mądry trzeba było wkleić ten swój cudowny wierszyk przede mną.
Też nie che mi się dalej komentować bo na trolla trafiłem.
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Potoki są czasem wydajniejsze.Pajaczek pisze:No Twoja propozycja z 2 potokami jest multi wydajna...
Kolejny teoretyk....
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
buehuhe, tak wierzę w Twój wynik jak w króliczka wielkanocnego No ale ok Skoro na logikę nie zaskakujesz że wykonanie jednej komendy musi trwać krócej niż dwóch to Sprawdźmy )
PPs. Zwróć uwagę, że poprosiłem autora tematu aby przedstawił wynik lastb. Byłem gotowy przygotować dla Niego ładną linijkę, jednak nie doczekaliśmy się Czytamy, czytamy, czytamy i mniej choleryki )
Kod: Zaznacz cały
Linux MTA 3.10.7 #2 SMP Thu Aug 15 04:03:21 CDT 2013 x86_64 Intel(R) Xeon(TM) CPU 3.20GHz GenuineIntel GNU/Linux
root@MTA:~# time cat /var/log/messages | grep sshd | grep Failed
real 0m0.024s
user 0m0.015s
sys 0m0.006s
root@MTA:~# time grep -w 'sshd\[\|Failed password for' /var/log/messages
real 0m0.008s
user 0m0.005s
sys 0m0.002s
Kod: Zaznacz cały
Linux host 2.6.29.6 #2 SMP Mon Aug 17 11:58:18 CDT 2009 x86_64 Intel(R) Xeon(R) CPU X5355 @ 2.66GHz GenuineIntel GNU/Linux
root@host:~# time cat /var/log/messages | grep sshd | grep Failed
real 0m0.270s
user 0m0.002s
sys 0m0.014s
root@host:~# time grep -w 'sshd\[\|Failed password for' /var/log/messages
real 0m0.012s
user 0m0.008s
sys 0m0.003s
Kod: Zaznacz cały
Linux alien 3.10.12 #2 SMP Sun Sep 15 00:05:24 CDT 2013 x86_64 Dual-Core AMD Opteron(tm) Processor 2216 AuthenticAMD GNU/Linux
root@alien:~# time cat /var/log/messages | grep sshd | grep Failed
real 0m1.495s
user 0m0.260s
sys 0m0.603s
root@alien:~# time grep -w 'sshd\[\|Failed password for' /var/log/messages
real 0m0.775s
user 0m0.640s
sys 0m0.134s
Kod: Zaznacz cały
Linux ldap 2.6.24.5-smp #2 SMP Wed Apr 30 13:41:38 CDT 2008 i686 Intel(R) Xeon(R) CPU 5150 @ 2.66GHz GenuineIntel GNU/Linux
root@ldap:~# time cat /var/log/messages | grep sshd | grep Failed
real 0m1.229s
user 0m1.236s
sys 0m0.004s
root@ldap:~# time grep -w 'sshd\[\|Failed password for' /var/log/messages
real 0m0.484s
user 0m0.476s
sys 0m0.000s
Ps. gienek, nie wyzywaj tutaj nikogo proszęgienek pisze:Jesteś taki mądry trzeba było wkleić ten swój cudowny wierszyk przede mną.
Też nie che mi się dalej komentować bo na trolla trafiłem.
PPs. Zwróć uwagę, że poprosiłem autora tematu aby przedstawił wynik lastb. Byłem gotowy przygotować dla Niego ładną linijkę, jednak nie doczekaliśmy się Czytamy, czytamy, czytamy i mniej choleryki )
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Puść sobie dwie wersje na logu z ponad milionem linii zobaczysz różnice.
W tym wątku z mojej strony to wszystko.
W tym wątku z mojej strony to wszystko.
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
A przepraszam nie padło No cóżgienek pisze:W tym wątku z mojej strony to wszystko.
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Puść sam i pokaż nam wyniki. Jestem bardzo ciekawy.gienek pisze:Puść sobie dwie wersje na logu z ponad milionem linii zobaczysz różnice.
Pozdr0
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Wyniki już wkleiłem wcześniej.
Niestety tak wygląda duskusja z kolesiami którzy na domowych sztotach z kilkoma tysiącami linii feruja jednoznaczne opinie.
ps
Czy to forum to jakieś 20-litrowe akwarium z metalowymi ramami i bojownikiem w środku?
Niestety tak wygląda duskusja z kolesiami którzy na domowych sztotach z kilkoma tysiącami linii feruja jednoznaczne opinie.
ps
Czy to forum to jakieś 20-litrowe akwarium z metalowymi ramami i bojownikiem w środku?
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
buehueh Moje wyniki powyżej podawane z C7000 C-class HP BladeSystem .gienek pisze:Niestety tak wygląda duskusja z kolesiami którzy na domowych sztotach z kilkoma tysiącami linii feruja jednoznaczne opinie.
Bojówka z mojej strony zaczęła się od Twojego obrażania mojej osoby Jak będziesz chciał to Znajdziesz swój postgienek pisze:ps
Czy to forum to jakieś 20-litrowe akwarium z metalowymi ramami i bojownikiem w środku?
Dla mnie osobiście to już EOT - nie biorę dłużej udziału w dyspucie.
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Zakładam, że nie możesz udostępnić swojego pliku z logami.gienek pisze:Wyniki już wkleiłem wcześniej.
Zakładam też, że w najgorszym przypadku, każda linia w tym pliku to błąd logowania. A więc:
Kod: Zaznacz cały
|(dienet@t61)~|$ for i in $(seq 1 1000000); do echo line${1} >> test_f; done
|(dienet@t61)~|$ wc -l test_f
1000000 test_f
|(dienet@t61)~|$ time grep line test_f > /dev/null
real 0m0.165s
user 0m0.147s
sys 0m0.016s
|(dienet@t61)~|$ time cat test_f | grep line > /dev/null
real 0m0.171s
user 0m0.150s
sys 0m0.031s
Proszę też o zwrócenie nie tylko na czas real, ale też sys!
Kod zaczerpnięty stąd: http://stackoverflow.com/questions/1350 ... t-and-grep
Pozdr0
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
U mnie serwery aktualnie korzystają z weekandu i ciachają backupy, ale zrobiłem testy na dwóch maszynach, jednym bardziej i drugim mniej zmęczonym zadaniami:
Pierwsza maszynaDruga maszyna mniej obciążona
Dla podkreślenia wagi strumieniowania z jednej komendy do drugiej oprócz poleconego jedynie cat'a wykonałem cat + grep + grep.
Pierwsza maszynaDruga maszyna - tutaj ładnie widać różnicę:
Pierwsza maszyna
Kod: Zaznacz cały
root@Server:~# uname -a
Linux Server 3.10.7 #2 SMP Thu Aug 15 04:03:21 CDT 2013 x86_64 Intel(R) Xeon(TM) CPU 3.20GHz GenuineIntel GNU/Linux
root@Server:~# for i in $(seq 1 1000000); do echo line${1} >> test_f; done
root@Server:~# wc -l test_f
1000000 test_f
root@Server:~# time grep line test_f > /dev/null
real 0m0.226s
user 0m0.192s
sys 0m0.017s
root@Server:~# time cat test_f | grep line > /dev/null
real 0m0.214s
user 0m0.197s
sys 0m0.037s
Kod: Zaznacz cały
Linux webster 3.10.17 #2 SMP Wed Oct 23 16:34:38 CDT 2013 x86_64 Intel(R) Core(TM) i7-3610QM CPU @ 2.30GHz GenuineIntel GNU/Linux
root@webster:~ # for i in $(seq 1 1000000); do echo line${1} >> test_f; done
root@webster:~ # wc -l test_f
1000000 test_f
root@webster:~ # time grep line test_f > /dev/null
real 0m0.106s
user 0m0.101s
sys 0m0.004s
root@webster:~ # time cat test_f | grep line > /dev/null
real 0m0.106s
user 0m0.107s
sys 0m0.007s
Pierwsza maszyna
Kod: Zaznacz cały
root@Server:~# for i in $(seq 1 1000000); do echo "line${1} kaktus${1}" >> test_kaktus_f; done
root@Server:~# time grep "line\|kaktus" test_kaktus_f > /dev/null
real 0m0.374s
user 0m0.272s
sys 0m0.028s
root@Server:~# time cat test_kaktus_f |grep line|grep kaktus test_kaktus_f > /dev/null
real 0m0.471s
user 0m0.438s
sys 0m0.068s
Kod: Zaznacz cały
root@webster:~ # for i in $(seq 1 1000000); do echo "line${1} kaktus${1}" >> test_kaktus_f; done
root@webster:~ # time grep "line\|kaktus" test_kaktus_f > /dev/null
real 0m0.077s
user 0m0.075s
sys 0m0.002s
root@webster:~ # time cat test_kaktus_f |grep line|grep kaktus test_kaktus_f > /dev/null
real 0m0.245s
user 0m0.246s
sys 0m0.005s
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Gienku: gdybyś uważniej czytał, a mniej brał przykładu ze swojego idola (tego z avatara) to może byś zauważył, że użyłem sformułowania "wydajniejsze", co niekoniecznie jest tożsame z "szybszy". Jak myślisz, które zadanie będzie wydajniejsze: liczące coś przez godzinę, ale używające jednego rdzenia, czy wykonujące to samo zadanie przez pół godziny, ale na 4 rdzeniach?
I takie małe porównanie wykonań powyższego, wykonane na pewnym, niestety niedomowym szrocie: (nawet czasowo nie był zbytnio obciążony, policzyłem to rano, jak jeszcze niewiele pracy miał).
Oraz z faktycznie domowego szrota:
Przy okazji, to ostatnie w 3 wersjach, bo Webster chyba przez nieuwagę zamieścił wynik z nie do końca poprawnej wersji, która dla potoków daje bardziej optymistyczne wyniki niż są one w rzeczywistości
I takie małe porównanie wykonań powyższego, wykonane na pewnym, niestety niedomowym szrocie:
Kod: Zaznacz cały
[ log]$ for i in $(seq 1 1000000); do echo line${1} >> test_f; done
[ log]$ wc -l test_f
1000000 test_f
[ log]$ time grep line test_f > /dev/null
real 0m0.147s
user 0m0.135s
sys 0m0.012s
[ log]$ time cat test_f | grep line > /dev/null
real 0m0.156s
user 0m0.138s
sys 0m0.038s
[ log]$ top | head -n 5
top - 09:21:43 up 27 days, 22:05, 38 users, load average: 20.00, 13.87, 8.10
Tasks: 2102 total, 23 running, 2068 sleeping, 9 stopped, 2 zombie
Cpu(s): 2.1%us, 2.1%sy, 1.1%ni, 94.5%id, 0.2%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 264498996k total, 81789648k used, 182709348k free, 9845928k buffers
Swap: 62488544k total, 8k used, 62488536k free, 61680516k cached
[ log]$ for i in $(seq 1 1000000); do echo "line${1} kaktus${1}" >> test_kaktus_f; done
[ log]$ time grep "line\|kaktus" test_kaktus_f > /dev/null
real 0m0.129s
user 0m0.111s
sys 0m0.018s
[ log]$ time cat test_kaktus_f |grep line|grep kaktus > /dev/null
real 0m0.406s
user 0m0.595s
sys 0m0.054s
[ log]$ time cat test_kaktus_f |grep line|grep kaktus test_kaktus_f > /dev/null
real 0m0.507s
user 0m0.487s
sys 0m0.036s
Oraz z faktycznie domowego szrota:
Kod: Zaznacz cały
bash-4.1$ uname -a
Linux darkstar 2.6.37.6 #3 SMP Sat Apr 9 22:49:32 CDT 2011 x86_64 AMD FX(tm)-8320 Eight-Core Processor AuthenticAMD GNU/Linux
bash-4.1$ for i in $(seq 1 1000000); do echo line${1} >> test_f; done
bash-4.1$ time grep line test_f > /dev/null
real 0m0.112s
user 0m0.101s
sys 0m0.010s
bash-4.1$ time cat test_f | grep line > /dev/null
real 0m0.122s
user 0m0.109s
sys 0m0.027s
bash-4.1$ for i in $(seq 1 1000000); do echo "line${1} kaktus${1}" >> test_kaktus_f; done
bash-4.1$ time grep "line\|kaktus" test_kaktus_f > /dev/null
real 0m0.094s
user 0m0.084s
sys 0m0.009s
bash-4.1$ time cat test_kaktus_f |grep line|grep kaktus > /dev/null
real 0m0.272s
user 0m0.386s
sys 0m0.033s
bash-4.1$ time cat test_kaktus_f |grep line|grep kaktus test_kaktus_f > /dev/null
real 0m0.261s
user 0m0.252s
sys 0m0.021s
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
Co dałem nie tak? Dobrze Wykonałeś, nigdzie nie było lepszego wyniku dla przekazywania potoku. "Poka" paluchem bo nie mogę odnaleźć
Re: [Bash] Prosty skrypt tworzący log o błędnym logowaniu.
cat test_kaktus_f |grep line|grep kaktus test_kaktus_f > /dev/null