Crontab nem indítja a scriptet

Fórumok

van egy script ami PID alapján megvizsgálja, hogy fut-e egy adott szerver
ha nem fut akkor elindítja

kézzel indítva a script szépen végzi is dolgát

hozzáadtam a crontab-hoz "crontab -e" paranccsal
* * * * * sh /root/server_restart.sh

a file neve server_restart.sh és a root mappában található
a crontab -e parancsot is rootként adtam ki

a group fileban a root is tagja a crontab csoportnak
mégsem fut le a script

mi lehet a probléma?

Hozzászólások

Sep 8 14:10:01 Debian /USR/SBIN/CRON[1139]: (root) CMD (sh /root/server_restart.sh)
Sep 8 14:10:01 Debian /USR/SBIN/CRON[1138]: (CRON) error (grandchild #1139 failed with exit status 1)
Sep 8 14:10:01 Debian /USR/SBIN/CRON[1138]: (CRON) info (No MTA installed, discarding output)
Sep 8 14:11:01 Debian /USR/SBIN/CRON[1176]: (root) CMD (sh /root/server_restart.sh)
Sep 8 14:11:01 Debian /USR/SBIN/CRON[1175]: (CRON) error (grandchild #1176 failed with exit status 1)
Sep 8 14:11:01 Debian /USR/SBIN/CRON[1175]: (CRON) info (No MTA installed, discarding output)

lehet hogy ostoba kérdés de mi az az MTA?
és milyen package kell ehhez?

MTA = mail transfer agent, a cron (meg az ehhez hasonlo programok) emailben is elku"ldik nyu"gjeiket.

Ha `sh /root/server_restart.sh` modon inditod a szkriptedet, csak ugy, parancssorbol, akkor mi tortenik? Ill ne'zd meg hogy a szkript haszna'l-e /usr/local/(s)bin-es dolgokat, mert az a cron-os PATH-ban nincs benne. Ill tru"kk lehet me'g hogy #!/bin/bash modon inditod a szkriptedet, es nem #!/bin/sh.

Vagy MTA beállítás és levelezés helyett egyszerüen egy > /root/valami.log 2>&1 az indítandó parancs végére. Így benne lesz minden nyügje a cron-nak a logban :)
pl:
05 10 * * * /root/eztfuttasd.sh > /root/eztfuttasd.log 2>&1

Ettöl függetlenül a leggyakoribb hibák tényleg:
- nincs futtatási jog a scripten
- nincs benne a parancs elérése a cron által használt PATH változóban

#!/bin/bash-t használok

ha sh server_restart.sh -t írok be a parancssorba akkor elindul a szerver

egyébként használ a script /usr/local/sbin-es dolgokat :)

és érdekelne az e-mail értesítés lehetősége
hogy lehet ezt megoldani, hogy a crontab jelentsen mailben?

előre is köszi mindent!

Mondjuk hirtelen:
1., postfix/sendmail/exim vagy egyéb, a distro esetén könnyen elérhetö MTA telepítése
2., /etc/aliases fájl állítás, _vagy_ crontab elején (ha jól emlékszem) MAILTO= változó megadása. (Persze a szervernek tudnia kell ez irányban küldeni, ami sok esetben további kérdéseket, problémákat vet fel...)

sajnos a probléma még mindig adott, crontabbal nem indul a script (kézzel viszont kiválóan teszi a dolgát)

ls -l eredménye a root könyvtárban
-rwxr-x--- 1 root root 746 aug 22 09.09 server_restart.sh

crontab -l
# m h dom mon dow command
* * * * * sh /root/server_restart.sh

grep -i cron /var/log/syslog eredménye:
Sep 8 14:10:01 Debian /USR/SBIN/CRON[1139]: (root) CMD (sh /root/server_restart.sh)
Sep 8 14:10:01 Debian /USR/SBIN/CRON[1138]: (CRON) error (grandchild #1139 failed with exit status 1)
Sep 8 14:10:01 Debian /USR/SBIN/CRON[1138]: (CRON) info (No MTA installed, discarding output)
Sep 8 14:11:01 Debian /USR/SBIN/CRON[1176]: (root) CMD (sh /root/server_restart.sh)
Sep 8 14:11:01 Debian /USR/SBIN/CRON[1175]: (CRON) error (grandchild #1176 failed with exit status 1)
Sep 8 14:11:01 Debian /USR/SBIN/CRON[1175]: (CRON) info (No MTA installed, discarding output)

a script használ /usr/local/sbin "cuccokat" is (ebben az esetben mi a teendő?:))

Ilyet miért cron-ba csinálsz?

Erre talán sokkal jobb az init azaz az inittab, vagy a initctl.
Itt be tudod állítani, hogy ha leáll, akkor újraindítsa és milyen paraméterekkel.
javasolnék még egy debug módot a .sh elejére, így tudod mi száll el: #!/bin/bash -x vagy ahonnan szeretnéd set -x. Így egyértelmű lesz a hiba oka, főleg ha a kimenetet egy file-ba irányítod.

Legyen ilyen:
crontab -l
# m h dom mon dow command
* * * * * /root/server_restart.sh > /root/server_restart.log 2>&1

Minden "kézzel megy, cron-ból nem" probléma megoldásának első lépése ellenőrizni a környezeti változókat. Mivel cron-ból több mint valószínű nem lesz ugyanaz. Szinte minden héten van ilyen topic...

igazad volt, /usr/local/sbin hiányzott a parancs elől :)
így most működik
hálás köszönet!

amit nem értek, hogy ez a script korábban még működött egy tesztkörnyezetben (virtualbox-ra tettem fel egy i386-os debiant)
ott nem volt semmi hibaüzenet, simán magától indult a szerver :D

Köszönet mindenkinek a segítségért!!

most jön a crontabos email értesítés összedrótozása :)

Üdv!

Olyan gondom van, hogy adott egy script, amit manuálisan lefuttatva szépen teszi a dolgát, viszont ha cron által automatizálom akkor nem működik. A script lefuttat egy hard disk sentinel elemzést, és a számomra fontos infókat és az aktuális időt, dátumot egy log fájlba menti, hiba esetén email-t küld. Manuális futtatás esetén szépen lefut, a log fájlba bekerül az infó (pl.: 2013/09/11-21:40 Health: 100% Performance: 100%), viszont ha a cron futtatja (minden nap, délben) akkor csak az aktuális dátum és idő kerül bele semmi más. Miért lehet ez?

Köszönöm

Üdv! a server_restart.sh milyen visszatérési értékkel fejeződik be?

--
A gyors gondolat többet ér, mint a gyors mozdulat.