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?
- 7367 megtekintés
Hozzászólások
grep -i cron /var/log/syslog
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
#!/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!
- A hozzászóláshoz be kell jelentkezni
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...)
- A hozzászóláshoz be kell jelentkezni
"mi az az MTA"
Újabb rendszergazdák gyöngye? :)
- A hozzászóláshoz be kell jelentkezni
ha nem kérdezek nem tanulok :D
amúgy kb. fél éve linuxozok :)
és jelenleg egy zabbix szervert dobtam össze
az első telepítésnél kellett némi segítség (postgresql adatbázis miatt) de most már ez sem okoz gondot
- A hozzászóláshoz be kell jelentkezni
Nafikare necesse est, de mielőtt nekilátnék, utánagondolnék, nem szoktam-e olyan szkriptes kérdéseket feltenni, amelyekett man használatával, vagy az 1-2 nappal korábban feltett kérdésemre adott válasszal már magam is megválaszolhatnék. ;)
- A hozzászóláshoz be kell jelentkezni
"mi az az MTA"
Magyar Tudományos Akadémia ;)
- A hozzászóláshoz be kell jelentkezni
tehát két helyes megoldás is van :D
- A hozzászóláshoz be kell jelentkezni
Csak akkor, ha az akadémikusok publikálnak a syslog-odban.
- A hozzászóláshoz be kell jelentkezni
ez sincs kizárva :D
- A hozzászóláshoz be kell jelentkezni
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ő?:))
- A hozzászóláshoz be kell jelentkezni
Olvasol is, vagy csak írsz?
Több lehetséges megoldást is javasoltunk. Mindegyik müködöképes. Ki kellene próbálni!
Egyébként:
(No MTA installed, discarding output) -> telepíts egy MTA-t és legalább a log üzeneted megszünik
- A hozzászóláshoz be kell jelentkezni
lesz helyette mail.log :)
- A hozzászóláshoz be kell jelentkezni
De legalább nem másolja be még vagy 500x ugyanazt a logrészletet :)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
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 :)
- A hozzászóláshoz be kell jelentkezni
Nagyon egyszerű a válasz: környezeti változók.
- A hozzászóláshoz be kell jelentkezni
Ü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
- A hozzászóláshoz be kell jelentkezni
Üdv! a server_restart.sh milyen visszatérési értékkel fejeződik be?
--
A gyors gondolat többet ér, mint a gyors mozdulat.
- A hozzászóláshoz be kell jelentkezni
köszi a kérdést, de közben megoldódott a problémám :)
- A hozzászóláshoz be kell jelentkezni
sh-hoz nem volt PATH-od, és amikor a /root/server_restart.sh maradt csak a cronban, egyből ment a sztori mi? :)
Amúgy ezért illik tartani egy MTA-t a kéznél, hogy kapjon ezekről a root egy levelet ;)
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Ja, ha végigolvasnám a threadet _teljesen_, nem kéne irkálnom fölöslegesen :)
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni