14. november 2006 - 17:36Der er
13 kommentarer og 1 løsning
Cron job kører ikke
Hej alle.
Jeg har aldrig prøvet at lave et cron-job før, og har derfor læst mig frem til de mest basale ting. Men noget virker ikke. Systemet som det køres på er en modificeret Redhat Enterprise (ESX 3).
Systemets eneste bruger (ved godt, at det er dårlig stil) er root, så derfor retter jeg i filen /etc/crontab. Indholdet af den ser således ud:
Jeg har oprettet et dir der hedder /etc/cron.backup, hvori der ligger en fil, der hedder telltime, som er blevet gjort eksekverbar. Filens indhold (dette er bare en test) er flg.:
echo `date +%H.%M.%S`
Når jeg i shell'en (Bash) skriver crontab -l viser den linjen:
1-59 * * * * echo `root date +%H.%M.%S`
Hvordan kan det nu være? Noget der også undrer mig, er at der overhovedet ingenting sker. Jeg har sikret mig, at crond kører og har prøvet at genstarte den efter jeg har rettet i crontab og mit script (service crond restart).
Det er helt sikkert noget meget basalt jeg har misforstået / overset, men jeg kan ikke komme på hvad det kan være.
Ok. Mht. at glemme "root", så har jeg læst (næsten alle dokumenter jeg har set) at man skal angive som hvilken bruger programmet skal afvikles som. Hvis man ser på de run-parts, der er oprettet i crontab-filen i forvejen, er der også angivet "root".
Der skulle vel ikke være et problem i, at oprette en ny run-parts til mit eget dir (/etc/cron.backup)?
/var/spool/cron, er det ikke kun for crontabs, som ikke er den generelle crontab? Det jeg mener er; hvis man skal have noget til at køre, hvis en bestemt bruger er logget på, bruger man dem i /var/spool/cron (crontab -e), men hvis man skal have noget til at køre uanset hvilken bruger der er logget ind (eller slet ingen), retter man /etc/crontab (crontab -e (som root))?
Grunden til, at jeg ikke bruger crontab -e er, at den som standard bruger vi editoren. Ved godt man kan ændre det med export VISUAL=nano eller hvad man nu ellers har af editor, men jeg kan ikke gøre det permanent.
Som tidligere nævnt, har jeg sikret mig, at crond kører. Jeg ved ikke om det er nødvendigt at genstarte servicen efter at have rettet i crontab-filen, men det er også gjort.
hvad der laves med "cron -e" kræver ikke, at den pågældende bruger er logget på. Du kan sagtens permanent lave om til nano - f.eks. i /etc/profile eller lignende.
Jeg ville aldrig lægge ting i den del af cron, men jeg er måske bare gammeldags - i hvert fald eksisterer cron -e på alle de mange unix-varianter jeg har været på. Største problem med cron er (og har altid været), at der skal være fuld path til programkald, da PATH kun er sat begrænset.
selve din kommando er vel fejlbehæftet - echo `root date +%H.%M.%S` - kommandoen root findes ikke - og med ` er det en shell-escape du laver. Kan du køre hele kommandoen i hånden?
Kommer der ikke mail til root omkring fejl i cron?
Hej igen. Ok. bruger crontab -e nu. Har også lavet selve kommandoen med fuld sti. Virker heller ikke. Det med root i kommandoen ved jeg godt var forkert, men det var noget den selv havde oprettet. I stedet for kommandoen:
Fik et "råd" om at lave en crontab-fil i mit ~ dir (altså /root) og så få crond til at køre den i stedet for (med crontab /root/crontab). Dette virkede heller ikke, så jeg har sat den til at afvikle /etc/crontab igen (på samme måde som med /root/crontab).
Jeg er nu tilbage ved, at alle synes det ser rigtigt ud, men det alligevel ikke virker. :(
Mht. fejl via mail, så er systemet ikke sat op til (så vidt jeg er orienteret) at modtage mails fra systemet. Det bliver givetvis skrevet til en logfil, men jeg er ikke klar over hvilken.
Hehe, ja, det kan jeg godt se. Der lader bare ikke til at være et progam (som "mail" f.eks.) til at læse det med. Jeg er ikke så velbevandret i konsol-email-klienter, det eneste jeg har brugt mere end een gang er pine (kører normalt Slackware).
Ok. Det drejede sig om et forkert antal felter pr. linje. Den dokumentation jeg havde fået fat på, beskrev det som om hver linje havde 7 felter, og ikke 6. Felterne skulle efter sigende være: 1) minut 2) time 3) md. dag 4) måned 5) ugedag 6) bruger 7) kommando .. hvilket stemmer overens med linjerne ovenfor. Men når jeg fjerner felt 6 fra linjerne, så virker det. Det underlige er bare, at den kører cron.hourly, etc. som den skal, på trods af, at de linjer faktisk har 7 felter.
Ok, jeg giver mig selv points for denne, da den har stået åben for længe nu, og problemet faktisk er løst.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.