crond mizériám
Sziasztok!
Meg kell mondanom, sohasem gondoltam volna, hogy az első éles webszerver ismerkedésem egy banális apróságon hasal el...
Közületek már páran olvashatták topicomat a hup.hu-n, most szeretném a ti véleményeteket is kikérni.
Van egy virtual szervereünk CentOS-vel. Kaptam hozzá ssh-t és kifogástalanul működik az elérés.
Tegnap előtt úgy döntöttem teszek egy task-ot az /etc/crontab fájlba. A task egy php fájlt hivogat óránként az ehhez a szerverhez tartozó webroot-ban. Láttam műxik, gondoltam minden ok. Kitöröltem a task-ot az /etc/crontab fájlból és mondtam neki, hogy /etc/init.d/crond restart.
A helyzet az, hogy a task ugyan úgy fut tovább. Ezek után kaptam a hup-on néhény jótanácsot (pl.: beszéljek a rendszergazdával) és mondtam, hogy crontab -e, erre ő, hogy "No crontab for root", aztán mondtam, hogy crontab -r és ő még mindíg azt mondta, hogy "No crontab for root".
Elkezdtem keresni a PID-jét a processznek: ps aux aztán ps aux | grep php aztán lsof | grep php aztán ps -edaf | grep php...nem találtam semmit (vagy nem tudom, hogy amit találtam, azok között van-e amit keresek).
Ezek után azt mondtam /etc/init.d/crond stop majd reboot. Ujraindulás után a task ugyan úgy lefut óránként.
Mit javasoltok, hol kutakodjak?
■ Meg kell mondanom, sohasem gondoltam volna, hogy az első éles webszerver ismerkedésem egy banális apróságon hasal el...
Közületek már páran olvashatták topicomat a hup.hu-n, most szeretném a ti véleményeteket is kikérni.
Van egy virtual szervereünk CentOS-vel. Kaptam hozzá ssh-t és kifogástalanul működik az elérés.
Tegnap előtt úgy döntöttem teszek egy task-ot az /etc/crontab fájlba. A task egy php fájlt hivogat óránként az ehhez a szerverhez tartozó webroot-ban. Láttam műxik, gondoltam minden ok. Kitöröltem a task-ot az /etc/crontab fájlból és mondtam neki, hogy /etc/init.d/crond restart.
A helyzet az, hogy a task ugyan úgy fut tovább. Ezek után kaptam a hup-on néhény jótanácsot (pl.: beszéljek a rendszergazdával) és mondtam, hogy crontab -e, erre ő, hogy "No crontab for root", aztán mondtam, hogy crontab -r és ő még mindíg azt mondta, hogy "No crontab for root".
Elkezdtem keresni a PID-jét a processznek: ps aux aztán ps aux | grep php aztán lsof | grep php aztán ps -edaf | grep php...nem találtam semmit (vagy nem tudom, hogy amit találtam, azok között van-e amit keresek).
Ezek után azt mondtam /etc/init.d/crond stop majd reboot. Ujraindulás után a task ugyan úgy lefut óránként.
Mit javasoltok, hol kutakodjak?
/etc/cron.*
Azt is leellenőrizheted, hogy kinek a nevében fut a cron (/var/log/cron fileba naplózik)
Ha abban benne van és nem a root futtatja, akkor a crontab -e usernev paranccsal szerkesztheted az adott user crontabját.
Azt tudni kell, hogy ha az /etc/crontab file-t szerkeszted, akkor a crontab -l root nem fogja listázni a jobot.
A másik, hogy nem kell újraindítani a crond-t a crontab file szerkesztésekor.
A ps aux meg lsof csak akkor fogja mutatni a jobodat amikor az éppen fut, és persze kilőni is csak akkor tudod (és ha valahol a cronba van beragadva, akkor hiába lövöd ki, a megadott ütemezéssel újra fogja indítgatni)
Köszi, nézem!
Köszi, megnézem! Képzeld, tegnap este leállítottam a crond-t (/etc/init.d/crond stop), ma reggel meg ezt mondja:
login as: *****
****##kukac##*****.hu's password:
Last login: Fri Nov 7 08:27:11 2008 from **********.hu
[****##kukac##*****.hu ~]# /etc/init.d/crond status
crond (pid 8322) is running...
[****##kukac##*****.hu ~]# /etc/init.d/crond stop
Stopping crond: cannot stop crond: crond is not running. [FAILED]
Most akkor mi van?
s_volenszki
Fura
Én ezt tenném:
Hát...
Megnéztem a log-ot, a következő felhasználók láthatóak:
root
CRON
*system*
Hogyan lehet elkapni?
Tegnap éjjel gugliztam a témára és találtam két érdekes dolgot:
Az egyik az volt, hogy azt írták, ha leállítom a cront, kiveszem a task-ot crontab-ból, akkor két lehetőségem van. Vagy megkeresem a process-t és kinyírom, vagy újraindítom a rendszert és kiürülnek azok a process-ek amelyek a task-hoz tartoztak.
A másik, hogy a process-eknek lehet négy állapota:
Runing
Waiting
Stopped
Zombie
Lehet ezeket ilyen formában lekérdezni? Gondoltam jó lenne látni a waiting és a zombie process-eket. Bár gondolom, ha waiting, akkor az legfeljebb a crond-t mutatja, hiszen az egy létező (vagy nem létező) fájlból olvassa az arra az időpontra, eseményre szánt feladatokat.
A task-om óránkénti volt. Ha kikommentelem a crontab-ból a run-parts /etc/cron.hourly tasko-ot és megvárjuk mi történik, azzal jutunk előrébb?
Ha kikommentelem a crontab-ban a
processek
A ps aux esetében meg a STAT oszlopot kell figyelni ugyanezért.
(és persze man ps meg man top)
Még mindíg fut!
Cron csere?
Ami a problémát illeti, nem ismerem a CentOS-t, de Gentoo alatt pl az, hogy valaminek a státusza be van állítva valamire nem jelenti azt, hogy tényleg fut. Ennek az az oka, hogy még senki nem írta meg azt a tudományt, hogy a szoftverekről meg lehessen mondani, hogy futnak-e vagy sem (a pid file kivételével).
Valami történik!
Megvizsgáltam tüzetesen a /et/cron.hourly/ könyvtár tartalmát:
mcelog.cron (tartalom ami nincs kikommentelve:)
/usr/sbin/mcelog --ignorenodev --filter >> /var/log/mcelog
@ravencore (tartalom ami nincs kikommentelve:)
. /etc/ravencore.conf
$RC_ROOT/sbin/run_cmd checkconf
Szóval hivatalosan ezek nem futnak le óránként. Ki kell derítenem, hogy mi micsoda!