Laikus linux webszerver üzemeltető első és legfontosabb aranyszabálya
Nem mennek a weblapok? Nem tudsz FTP-zni? Torlódnak az Apache-szálak?
Miért?
Elfogyott a tárhely!
Miért?
du -hs /var/log
du -hs /var/mail
Nem mennek a weblapok? Nem tudsz FTP-zni? Torlódnak az Apache-szálak?
Miért?
Elfogyott a tárhely!
Miért?
du -hs /var/log
du -hs /var/mail
Nemrég a Twitteren találkoztam először a témával, azóta komolyabban is figyelem az eseményeket. Miről is van szó? Úgy tűnik a szakma erősen ráizgult egy 6 év alatt kifejlesztett, nemrég piacra dobott, kb. bankkártya méretű mini PC-re. Az izgalomnak valószínűleg több oka is van:
Az Index is megemlékezett a témáról pár napja, igaz nem eresztette bő lére, de a koncepció lényege benne van:
A brit oktatási minisztérium változtatni szeretne a számítástechnika tanításán iskolákban, nagyobb hangsúlyt fektetve a programozási ismeretekre. A Pi segítheti ezt, fontos szerepe lehet abban, hogy a gyerekek elsajátítsák az alapokat.A Pi 22 fontba kerül, de még az idén piacra dobnak egy még olcsóbb változatot, az 16 fontba kerül majd. Az olcsóság oka a puritánság: nyílt forráskódú Linux van a gépen, hozzá lehet csatlakoztatni hagyományos monitorhoz, billentyűzetet, egeret lehet hozzákötni. Egy ethernet port is van rajta, vagyis internetezni is lehet vele.
Arra számítanak, hogy a Pi körüli közösség szoftvereket fog írni hozzá és megmutatják, hogyan használják a számítógépet.
forrás: index.hu
Szerelem első látásra :) Mini USB-vel táplálható az egész, ami azt jelenti, nincs sehol aktív hűtés a sztoriban - hangtalan, mint egy nindzsa. Akár 4 ceruza elemmel is elpöfög :) (Azonban mivel pl egy USB-s winyót, meg a videó kimenetet és egy billentyűzetet is meg kellhet hajtania egyidőben, azért nem árt egy erősebb (min. 700 mA-es) tápot adni neki.) Pici, egy dzsesszes kis tokozással szépen elrejthető a router-ünk mögött akár. A GPU-nak köszönhetően úgy néz ki a leírások alapján, hogy egy HD vidit is elvisz. Jelenleg támogatott Linux disztrók: Fedora, Debian, ArchLinux.
Igazi Linuxos játszótér, rengeteg lehetőséggel! :)
Én is rendeltem egyet hamar, bár egyelőre úgy tűnik, várni kell a szállítmányokra, mert nem bírják kiszolgálni a rájukszakadt rendelés zuhatagot. Eleve úgy kezdődött, hogy az első hivatalos itthoni forgalmazó úgy dönött, mégsem akarja forgalmazni. Ami végül nem akkora baj, mert az új szállító olcsóbban adja úgy tűnik :) A kütyü úgy érkezik, mint az ember: ruha nélkül, csupaszon. Egyetlen fájdalmam, hogy egy SATA, vagy PATA portot nem raktak rá :-/ Sebaj, marad az USB-s winyó... És hogy mire lehet jó azon kívül, hogy programozni tanuljunk rajta? Pár ötlet:
Én szerintem lecserélem rá a mostani letöltögetős miniPC-m. Abban van sajna proci hűtő venti és hangosabb jelenleg, mint bármelyik másik IT eszközöm otthon. És nagy is az. Bumszli táppal. Szóval megérett a cserére na! :)
A projekt hivatalos oldala: http://www.raspberrypi.org
Hivatalos Twitter csatorna: http://twitter.com/Raspberry_Pi
A magyar "fan klub": http://raspberrypi.hu
Forgalmazók világszerte: http://elinux.org/RPi_Buying_Guide
R-Pi HUB az elinux.org-on: http://elinux.org/RaspberryPiBoard
Egyébként meg Google :)
Néhány konfig fájlt kell viszonylag sűrűn lementenem az egyik éles szerverünkről a backupra, úgy, hogy lehetőleg sűrűn mentsem őket (esetemben 10 percenként), őrizzem meg őket egy hónapig, de az 1 napnál régebbiekből elég csak egyet. Ha valamiért nem menne a másolás, emailt küld a kudarcról. Egyszerű ügy.
Kis agyalás után végül ezzel a szkripttel oldottam meg:
#!/bin/bash
ATTACHFILE=`date +bkp_files_%Y%m%d%H%M.tar.gz`
SRC_DIR="/innen/mentjuk"
BKP_DIR="/backup"
BACKUP_SRV="bckserver"
ERR_MAILS="mailcimem@posta.hu"EXP_TIME=31
cd ${SRC_DIR}
# Betomoriti egy tar.gz-be a mentendo fajlokat es ssh-n atmasolja a backup szerverre/gepre - egy szusszanásra
tar cf - fajl1.dat fajl2.cfg fajl3.exe fajl4.jpg | gzip -c9 | ssh ${BACKUP_SRV} "cat > ${BKP_DIR}/${ATTACHFILE}"
if [[ $? -ne 0 ]]; then
echo -e 'Biztonsági mentés másolása sikertelen.' | mail -s "Backup error" ${ERR_MAILS};
logger -s -t backup 'A biztonsági mentés másolása sikertelen.'
else
logger -s -t backup 'A biztonsági mentés másolása sikeres.'
fi
# A 31 napnal regebbi masolat fileokat torli, az 1 napnal regebbiekbol csak a 02:00 orait hagyja meg
ssh ${BACKUP_SRV} "find ${BKP_DIR}/bkp_files_*0200.tar.gz -exec touch -a {} \;"
ssh ${BACKUP_SRV} "find ${BKP_DIR}/* -atime +1 -exec rm {} \;"
ssh ${BACKUP_SRV} "find ${BKP_DIR}/bkp_files_*0200.tar.gz -mtime +${EXP_TIME} -exec rm {} \;"Másoljunk 4 fájlt a BCKSERVER-re az ottani /backup mappába tar.gz-be tömörítve a gépünk /innen/mentjuk mappájából.
Tar-ral betuszkolom a 4 pálda fájlt egy tar-ba, átadom a gzip-nek, hogy letömörítse, és már lököm is be egy SSH sessionbe, aminek a túlsó végén mindezt bele irányítom egy időbélyeggel ellátott fájlba.
Hiba esetén repül a mail. (A másolás sikerességét a /var/messages-be is beírjuk a logger-rel.)
Aztán a túloldalon a backup fájlok közül a 2 óraiakat "megérintem" a touch paranccsal, hogy mostanra módosítsam a "Last access"-üket. Ezután kitörlök minden 1 napnál régebbi "Last acces"-ű fájlt. A mai összes, és az egy napnál régebbi 2 óraiak ugye megmaradnak. Ezután kitörlöm a 31 napnál régebbi "Modified date"-ű fájlokat, így a 2 óraiakból is csak egy hónapnyi marad.
Nyilván ez nem egy nagy fájlrendszer backupolására való, mert nem lehet vele inkrementálist (arra egyébként ez pl kis környezetben elég jó szerintem). De kis fájloknál, nagy számú verzió megőrzésére simán elég.
(Ja, és persze ahhoz, hogy cron-nal ütemezni tudjuk nem árt legenerálni a publikus kulcsot a gépünkön, és átmásolni a backup gépre az authorized_keys-be, hogy ne kérjenek az SSH session-ök jelszót, hanem csak szép csendben végezzék a dolgukat.)
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... :D Azért a sed-et (is) nagyon szeretjük! <3
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.
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
[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
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.
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
Ú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:
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 '^==> .* <==$'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 :)