Cron: poruka "grandchild failed"
Nakon nadogradnje na Debianovu distribuciju Squeeze poneki sistem-inženjeri pomalo panično pregledavaju logove u potrazi za neobičnim zapisima. Čine to kako bi na vrijeme uočili da neki servis ima problema u radu. No, mnogi se oslanjaju isključivo na logcheck i OSSEC da im dojavi sumnjive unose u logovima. Ovo, pak, nije poželjno, jer ti programi nikad neće poslati sve relevantne retke iz logova koji bi mogli pomoći da se problem riješi. Dakle, ipak je potrebno otići u logove i "baciti pogled". Jedan od upita koji su nastali nakon takvog "istraživanja" koji smo zaprimili na sys.help tiče se crona i čudne poruke "grandchild failed".
Iako čudna, poruka se odnosi na procese koje cron pokreće izvršavajući poslove koje ste mu zadali (cronjobs). U Unix i Linux svijetu ispravan završetak izvršavanja nekog programa ili skripte uvijek je popraćen izlaznim kodom 0 (exitcode). Kako to ovdje nije slučaj, jer je izlazni kod 1, cron će prijaviti grešku putem poruke u logovima. Da je prilikom izvršavanja skripte nastao i kakav izlazni tekst, korisnik root dobio bi mailom. Kako se to u ovom slučaju nije dogodilo, ostaje nam istržiti koji cronjob izaziva ove poruke. Ukoliko pokrenemo naredbu grep nad log datotekom, dobit ćemo ovakav rezultat:
# grep grandchild /var/log/syslog
Jun 27 21:45:01 server /USR/SBIN/CRON[29071]: (CRON) error (grandchild #29080 failed with exit status 1)
Jun 27 21:50:01 server /USR/SBIN/CRON[29612]: (CRON) error (grandchild #29617 failed with exit status 1)
Jun 27 21:55:01 server /USR/SBIN/CRON[30223]: (CRON) error (grandchild #30230 failed with exit status 1)
Neki se proces pokreće svakih 5 minuta i uzrokuje navedene poruke u logovima. Sada imamo kakav-takav trag. U Linuxovom cronu vrijeme izvršavanja cronjoba može se zadati na dva načina, tradicionalnim:
5,10,15,20,25,30,35,40,45,50,55 * * * * naredba
ili skraćenim:
*/5 * * * * naredba
Pa krenimo u potragu za tim cronjobom. Cronjobovi se nalaze na nekoliko mjesta, pa je najjednostavnije iskoristiti opciju "-r" naredbe grep koja uključuje internu rekurziju:
# grep -r -i '/5' /etc/cron*
# grep -r -i '5,10' /etc/cron*
Osumnjičena datoteka je iskrsla, a u ovom konkretnom slučaju riječ je o zaostatku amavis-stats paketa, koji se više ne održava i može se obrisati:
# dpkg --purge amavis-stats amavis-stats-cn
Za dodatnu sigurnost, provjerite je li obrisana datoteka /etc/cron.d/amavis-stats, pa ukoliko nije, obrišite je. Paket
amavis-stats-cn je inačice izbačen iz CARNetove inačice distribucije Squeeze, kao uostalom i Debiana (zbog neodržavanja programa).
Cijelu ovu situaciju smo opisali uglavnom kako bismo vas naučili sami istražiti neobične ili rijetke manifestacije problema na vašim Linux poslužiteljima. U konkretnom slučaju, osim neobičnog unosa i zauzimanja mjesta u logu, nikakve stvarne opasnosti nije bilo, ali ovakvi "trikovi" vam mogu pomoći u nekom sljedećem, ozbiljnijem, slučaju.
- Inačica za ispis
- Logirajte se za dodavanje komentara
- PDF version