Linux E X P R E S

Facebook

Pár tipů pro server

Řešení několika provozních chyb ..


Správu serverů stíhám zpravidla až o víkendech. V neděli jsem se po snídani podíval na zoubek jednomu neposlušnému serveru s Debianem.

Narůstající log emailového serveru

Jedním "skriptem" si sem-tam zobrazuji statistiku doručených/odeslaných zpráv a jejich poměru ke SPAMu, který přes server projde. jaké bylo moje překvapení, když jsem se dozvěděl o řádově desítce tisíc SPAMů, které server zachytil. Na denní statistiku mi to přišlo docela dost, ale druhým pohledem jsem jednoduše zjistil, že /var/log/mail.log během týdne nabral na váze a obsahuje data za více jak jeden den.

Na vině je v tomto místě logrotate, který (ani nevím proč) přestal rotovat log emailu. Podíval jsem se tedy do souboru /etc/logrotate.conf, v kterém jsem odkomentoval a upravil následující

/var/log/mail.info /var/log/mail.log {
missingok
daily
rotate 7
create
compress
}

dál zavolal 

logrotate -f /etc/logrotate.conf 

a logy mail.info a mail.log se smazaly (zálohovaly a posunuly podle pravidel rotování logu). Bohužel Postfix do nich přestal zapisovat.

Segfault ve /var/log/messages

Podíval jsem se do /var/log/messages, kde mě vim upozornil na opakující se řádky vypadající zhruba takto:

Sep 19 08:19:01 obelix kernel: [20704774.629416] cron[30684]: segfault at 0 ip 00000000 sp bfc9cfa4 error 4 in cron[8048000+8000]

Tuto chybu jsem kdysi už viděl, ale její řešení úspěšně zapomněl. Po chvíli hledání na Google, který všechno ví a zná jsem našel pravděpodobnou příčinu plynoucí z aktualizaci a chybějící některé z linkovaných knihoven. Řešení tam bylo také popsané a základní problém spočíval v tom, že nestačí restartovat pouze cron, ale také daemon atd.

/etc/init.d/cron restart
/etc/init.d/atd restart

Když o tom teď přemýšlím, tak možná byla výše uvedená "oprava" logrotate zbytečná a zřejmě se ukáže, že za to mohl právě segfaultující cron...

Jak donutit Postfix, aby znovu zapisoval do logu?

Postfix přesto dál odmítal zapisovat do logu, i když emaily přijímal a odesílal zcela korektně. Po dalším hledáním jsem nalezl odpověď i na tento problém, který spočívá někde mezi logovacím daemonem a postfixem. Řešením je vypnutí logovacího daemona, restart postfixu a zapnutí logovacího daemona.

/etc/init.d/sysklogd stop
/etc/init.d/postfix restart
/etc/init.d/sysklogd start

Dál jsem toho radši nechal a šel leštit motorku..

Jak hromadně přejmenovat přípony souborů?

Před pár týdny jsem přidával nové uživatele počítačové sítě a pomáhal mi při tom awk a makra ve vimu. Kromě toho jsem potřeboval hromadně přejmenovat některé soubory a můj nový správce souborů (Nautilus) si s tím nevěděl rady. Přejmenování souborů s příponou awk na txt se v konzoli provede třeba takto:

for i in *.awk; do mv $i `echo $i | tr awk txt`; done;

Oprava

Předchozí skript je špatně (viz komentáře), nakonec bude nejlepší použít rename.

rename 's/awk$/txt/' *.awk

nebo pokud chceme zdůraznit tečku před příponou souboru, pak raději

rename 's/\.awk$/\.txt/' *.awk

Další info na stránce "How to Bulk Rename Files"  ;-)

Diskuze (4) Nahoru