Sorok összefűzése sortörés törléssel, “sed”-del

Ezt elég sokáig keresgéltem a neten, mire megtaláltam, és sajnos a magyarázat nem is volt mellette, úgyhogy érteni azóta sem értem, csak használom :)

Egy logot dolgoztam fel, ami nagyon idiótán tördelte a bejegyzéseket fix maximális szélességű sorokra, függetlenül attól, hogy az az adott terminál ablakban kifért volna-e rendesen is, vagy sem. Gondoltam, kitörlöm a sorok végén az “új sor” karaktert, majd újratördelem rendesen, a bejegyzések eleje úgyis mindig dátum, arra könnyű mintát illeszteni, hogy előtte mindig nyisson új sort. Nagy naívan azt gondoltam, hogy sed-del majd a “\n” karaktereket jól behelyettesítem semmire, és kész is. Persze ez így marhára nem csinálja azt, amit kéne, mivel a “n”-t a sor végén nem veszi figyelembe a sed:

[root@gepem ~]# cat bena.log | sed 's/\n//g'

Egy darabig elbabráltam vele, de végül maradt a Google, és nagy nehezen megtaláltam ami nekem kell:

[root@gepem ~]# cat bena.log | sed ':a;N;$!ba;s/\n//g'

Na, végülis az alap elgondolás jó volt ugye (sed ‘s/\n//g’), de hogy az elejére a sed paramétereknek mit raktak a jómunkásemberek, na arról lövésem sem volt, de műxik. (Ha valaki fel tud világosítani a pontos működéséről, ne tartsa magában! :) Azért mivel szeretem tudni, hogy hogyan működnek, amiket használok, valamennyire kimazsoláztam a man-ból, hogy ki, mit csinál. Amire eddig eljutottam az ez:

‘N’ -Az aktuális sort a következővel összefűzve vizsgálja. Tehát a “\n”-t, amit egyébként ugye sorvégen nem vesz figyelembe találatként, így már meg fogja találni, mert a sor közepére kerül

‘:a’ -Ez csak egy címke (label), ide vissza fogunk térni.

‘ba’ -A b után lévő (a) címkére ugrik.

‘$!’ – A “$” jelzi, ha elértük az utolsó sort. A “!” pedig negál.

‘s/\n//g’ – Ez pedig ugye egy sima csere: “\n”-t semmire az összes találatra.

Tehát minden egyes sort összefűzűnk a következővel, egészen addig, míg az utolsó sort el nem érjük, majd ebben az egy sorban kicseréljük az összes “n” karaktert “üres sztringre”.

Azt hiszem nagyjából értem. De hogy magamtól ezt sosem találtam volna ki, az is biztos… 😀 Azért a sed-et (is) nagyon szeretjük! <3

Posted in Uncategorized | Tagged , | Leave a comment

Hogy a francba paraméterezzük be az Apache-ot?

Nagy forgalom és behalás? Relatív kis forgalom és behalás? 

szoptam, valamit felfogtam, korrigáljátok, ha rossz – folyamatosan frissíteni fogom, mert ez KELL, mint víz a szomjazónak, mert se az angol, se a magyar irodalom nem eléggé fasza (nincs egyben leírva sehol, úgy kell összevadászni)

http://www.devside.net/articles/apache-performance-tuning

http://www.itecsoftware.com/apache-prefork-vs-worker-threads

server status install

top

worker vs prefork, de minden prefork alapból, ez a régi stílus (non threaded, de biztonságosabban maradnak a threade-ek)

egyesek szerint a prefork ugyanolyan gyors *NIX rendszereken

apache2 -l -> mi van konfigolva? csak ezt kell állítani, mert csak fordítási időben lehet változtatni

prefork maxclients – ennyi apache2 instance fog futni, kiszámítása: szabad memória osztva egy ilyen méretével. ennek mérete a belefordított moduloktól függ (10MB – 50MB)
ha nem fér bele a memóriába, akkor elkezd swappolni, sokat swappol-e? top-ot nézd
ha sokat eszik, akkor nem lesz hely a mysql-nek, és az egyéb processzeknek, és behal amúgy is. 

a serverlimitnél nem lehet magasabb, de ugat is

spare dolgok, ennyi vár

keepalive és timout és keepaliverequest – ezek is kellenek

maxrequestperchild – ez a client-ek alatt van

pozim példája – egy oldal 4 requestet küldözget folyamatosan, egy mp alatt kb 2 lehet.

össz max request = maxclients × maxrequestperchild – vagyis statikus oldalnál ez kb. az egy idejű nyomkodó, ajaxosnál ennek tört része fér el egyszerre

Posted in Uncategorized | Leave a comment

Milyen könyveket adjon ki a Kiskapu magyarul?

A sok nagyszerű, programozással és szabad szoftverekkel kapcsolatos könyvet kiadó Kiskapu most egy kérdőívben méri fel, hogy mi érdekel minket.

Töltsétek ki ti is, ha van pár percetek.

Posted in Uncategorized | Tagged | Leave a comment

Hogyan nézzük meg, hol tart a ‘dd’ parancs futása?

Eladó sorba került került párom egy nem használt laptop HDD-je. Mivel voltak rajta olyan adatok, amik nem publikusak, úgy gondoltam tisztességesen legyalulom. Erre a ‘dd‘ parancsot választottam, ami ugye alacsony szinten másol blokkat a választott bemenetéről a választott kimenetére. (Amiken közben konverziókat is el tud végezni akár.) Igen hasznos kis programocska egyébként. Szóval, gondoltam feltöltöm az egész winyót nulákkal, az azért biztonságosabb, mint egy sima formatálás:

[root@gepem ~]# dd if=/dev/zero of=/dev/dsc bs=512

Igen ám, csakhogy ennek a kedves dd parancsnak a felhasználó számára nincs útközben semmi közölnivalója, csupán a legvégén kapunk egy másolási statisztikát, mikor lefutott. Szerencsére kis trükkel azért rá lehet venni, hogy útközben is infót kapjunk róla, hol is tart a művelet, ami egy 120 GB-os winyónál jól jön azért – főleg, mert elsőre lövésem nem volt, mennyi időt is vehet ez a művelet igénybe.

A trükk az, hogy kell a processnek küldeni egy USR1-es (10-es) SIGNAL-t, és máris villantja az infót. Tehát nyitottam gy új shellt, megnéztem a dd process PID-jét, és megkínáltam egy USR1-es SIGNAL-lal:

[root@gepem ~]# ps -ef | grep dd
root      2681  1799 15 10:45 pts/0    00:04:30 dd if=/dev/zero of=/dev/sdc bs=512
root      3216  3212  0 11:14 pts/1    00:00:00 grep dd

[root@gepem ~]# kill -USR1 2681
Az eredmény pedig  máris megjelenik a dd shelljében a már jó ideje némán futó parancs alatt:
[root@gepem ~]# dd if=/dev/zero of=/dev/sdc bs=512
14249409+0 beolvasott rekord
14249409+0 kiírt rekord
7295697408 bájt (7,3 GB) másolva, 1781,85 mp, 4,1 MB/mp
Na igen… Szóval, ez akkor még elszüttyög egy darabig úgy látom… :)
Posted in Uncategorized | Tagged , , , | Leave a comment

Operációs párkapcsolat

Friss oprendszerrel a seggem alatt mindig úgy érzem magam, mintha új párkapcsolatba kezdenék: tiszta lappal indulok.

Az igazi különbség a két dolog között az, hogy oprendszer esetében akkor is megvan ez az érzés, ha ugyanazt a disztribúciót teszem fel ugyanazzal a verzióval.

Posted in Uncategorized | Tagged | 3 Responses

Unity plugin kikapcsolása Ubuntu 11.04 alatt

Blogunkban én képviselem a hozzá nem értő szőke szerelmest. Mai rövid sztorimat szeretném megosztani veletek, ami néhány vicces percet azért okozott.

Az Ubuntuba most már nem sima gyorsindító pult kerül, hanem a szuper Unity Plugin. Lehet szeretni, vagy utálni, nekem az első problémám ott kezdődött, hogy hogyan lehet kusztomizálni.

sudo apt-get install compizconfig-settings-manager

Aztán, gondoltam egyet és kikapcsoltam a plugint, hátha visszaáll a klasszik kezelőfelület. De nem áll vissza! Helyette viszont eltűnik minden, és csak Ctrl + Alt + T leütésével lehet terminálozni. Sokaknak ez is elég, de szőkeségemnek több szín kell.

A lényeg, hogy a Unity Plugint ezzel kapcsolhatod vissza:

unity --reset
Posted in Uncategorized | Tagged , , , | 3 Responses

“Dummy” forgalom generálása hálózati kapcsolat teszteléshez SSH-val

Úgy adódott, hogy egy újonnan beszerelt Ethernet kártya működését szerettem volna tesztelni, hogy vesznek-e el csomagok rajta, és ha igen, mennyi. Ehhez kellett volna valami hálózati forgalmat generálnom, de nem volt kedvem nagy fájlokat keresgélni, vagy mappákat tömörítgetni ehhez, meg másolgatni, közben meg még azt is figyelni mondjuk, hogy a céloldalon mikor fogy el a hely.

Eszembe jutott, egy “hack”, amivel egyik gépről lehet egy mappát .tgz-be tömöríteni és egy másik gépen lévő szalag eszközre kiírni, mindezt on-the-fly, hogy ne kelljen a tömrített fájlhoz extra tárhely a forrás gépen (se), hanem menjen ki egyből szalagra a túloldalon. Ez így néz ki egy példával:

tar cvzf - /dir_to_backup | ssh dest_server "cat > /dev/tape0"

Ezt az elvet követve könnyen lehet egy “értelmetlen” hálózati forgalmat generáló parancssort írni. Vegyünk egy /dev/random, vagy egy /dev/zero blabla generátor eszközt (vegyük a /dev/zero-t, az gyorsabb, nehogy aztán ez szabja a határt a sebességnek 😉 ), irányítsuk bele egy SSH sessionbe egy másik gépre, majd ott az egészet toljuk egyből bele a jó öreg /dev/null digitális fekete lyukba, és voila:

tesztgep$> cat /dev/zero | ssh celgep "cat > /dev/null"

Aztán CTRL+C-ig meg sem áll a semmiből jött, hálót megjárt, majd a célgépen semmibe veszett másolás :))

 

Wiki részletezés az eszközökről:

/dev/zero
/dev/random
/dev/null

 

Posted in Uncategorized | Tagged , , , | 2 Responses

Bash-ben is lehet színes a világ

Ha realtime log ellenőrzésről, vagy akármilyen konzol megjelenítésről van szó, a kedvenc eszközöm erre a mycolorize. Egyszerűen, de nagyon okosan megírt kis szkript, amivel mintaillesztések segítségével lehet szövegrészeket színezni.

Használata igen egyszerű, standard inputról megetetjük a tartalommal amit ki akarunk színezni, majd paraméterekben megadjuk, hogy milyen mintára illeszkedő szövegeket milyen színűre akarunk színezni, illetve még prüttyögést is bekapcsolhatunk a mintákhoz:

Usage:   mycolorize {color} {regex} [bell] ... {color} {regex} [bell]

További segítség, hogy egy illeszkedésnél meg lehet adni, hogy az illeszkedő szöveget csak a /-től színezze (ez nem egy V, hanem egy backslash és egy slash).

Az egyik kedvenc megoldásom, amit példaként hoz fel a szkript szerzője az alábbi:

tail -f /var/log/apache2/error.log /var/log/{sys,auth.,kern.}log | mycolorize green '[-A-Za-z0-9/]+[[0-9]+]'     cyan '^... .. ..:..:.. /[A-Za-z0-9.]+ '     blue '^(.... )?... .. ..:..:..( .....)? '     blue '^.....-..-.. ..:..:...'     red '(error|[Ww]arning|[Nn]ot found|does not exist|[Rr]efused|[Uu]nknown)'     purple '([Ll]ogin|accepted)'     cyan '[0-9]+.[0-9]+.[0-9]+.[0-9]+'     pink '[Kk]ernel' beep     gray '^==&gt; .* &lt;==$'

Ez egész egyszerűen azt csinálja, hogy az apache error.log-ját, a syslog-ot, az auth.log-ot és a kern.log-ot színezi. (IP-t, hibaüzeneteket, dátumokat, stb.) Én ebbe még bevettem a messages fájlt is, és így aztán szép kis színes-szagos log nézegetőt kapunk, amivel aztán iszonyat könnyen lehet nyomon követni mik történnek épp a rendszeren. Persze ezt bármilyen logra használhatjuk, csak a log formátuma alapján kell a mintákat belőni.

A szkript persze nyilván minél több mindent színez, annál lassabb lesz, de ezt azért meg lehet még emészteni.

Én pl TSM konzol színezésre is ezt használom, pillanatok alatt át lehet vele látni a káoszt.

Érdemes a szkriptet is megnézni, aki szeret bash-ben programozni :)

Posted in Uncategorized | Tagged , , , , , | 1 Response