Fórum Root.cz
Hlavní témata => Server => Téma založeno: host 20. 08. 2013, 09:32:28
-
Dobrý den,
potřebuji spouštět automaticky skript v /etc/cron.d/ čas spouštění, práva spouštění skriptu mám nastavené správně. Nejsem si jistý cestou kde je soubor uložen. Cesta k souboru je ok, ale nejsem si jistý, jestli by v té cestě nemělo ještě něco být....
5 */1 * * * root /opt/udrzba/deletecyklusmail.sh
když spustím toto v termínálu /opt/udrzba/deletecyklusmail.sh tak to normálně funguje. Ale v kronu se to nespustí. Kron jsem samozřejmě restartoval. /etc/init.d/cron restart a deletecyklusmail.sh má práva 755 Nevíte kde je problém??
-
5 */1 * * * sh /opt/udrzba/deletecyklusmail.sh
a mimoto staci pouzit jenom crontab -e
-
udělal jsem a spustil se mi textový editor a v něm crontab... co tím chtěl básník říct????
-
upravit, ulozit a nic se restartovavat nemusi
-
aha tak to je fajn... nj jenže co upravit.... ještě mě napadlo že tam jsem měl prázdné řádky na konci crontabu tak jsem to odstranil tak by to snad mohlo pomoct...
-
tak znovu
5 */1 * * * sh /opt/udrzba/deletecyklusmail.sh
je spravny prikaz
root je uzivatel, ne prikaz, .sh je treba spoustet pomoci prikazu sh (pripadne ./)
-
Tak to co si psal výše nefunguje...
-
Tazatel ten cron radek daval do /etc/cron.d/... -> proto tam musel byt uzivatel (treba root). Cron se pri tom restartovat mimochodem nemusi.
Shellove skripty se obvykle pousti stejne jako jine programy, pokud maji na zacatku shebang - (treba #!/bin/bash ) a maji nastavene spousteni (chmod +x /opt/udrzba/deletecyklusmail.sh ).
Mozny zdroj problemu je take cesta - je mozna zapotrebi na zacatek toho cron souboru dat neco jako PATH=/bin:/usr/bin:/usr/local/bin
-
zase nic :-/
-
Podívej se do logů, jestli tam nenajdeš příčinu. Jinak dál zkus postupovat tak, že tam dáš nějaký elementární příkaz, třeba "touch /tmp/ahoj". Pokud se neprovede, máš blbě nastavení, pokud jo, máš asi problém ve scriptu. Zkus výstup scriptu přesměrovat do souboru (>>).
Jo a */1 nahraď za *. Je to zbytečný.
-
V klasickém crontabu se to spustí bez problému a udělá to to co má ale v /etc/cron.d/udrzba to enfunguje
-
Odstraň ze jména toho skriptu tečku, nech tam jen "deletecyklusmail".
-
V klasickém crontabu se to spustí bez problému a udělá to to co má ale v /etc/cron.d/udrzba to enfunguje
Nejspíš to bude tím že v klasickém crontabu se vše spouští s právy uživatele který ten crontab vlastní, ale v /etc/cron.d je třeba uvést s právy kterého uživatele se to má spustit - to se píše jako šestý parametr, takže syntaxe je trochu jiná...
-
Dobrý den,
tak vyzkoušel jsem všechny postupy které jste mi radili.
1. odstranil jsem .sh z názvu skriptu
2. práva uživatele jsem měl nastaveno na root tzn. šestý parametr
3. zkoušel jsem výstup skriptu přesunout do souboru pomocí >> vůbec se nic nevytvořilo ani když jsem třeba dal postqueue -p >>/home/uzivatel/pokus.txt nevytvořilo se to ani při /usr/sbin/postqueue -p....
Napadá mě jestli není spojitost v editaci protože já to edituji klasickým mceditem a pak restartnu službu... u crontabu není problém, ale u souborů ve složce /etc/cron.d se vůbec nic neděje....
-
když jsem se koukl do syslogu tak to napsalo toto
Aug 21 09:08:37 chef cron[22749]: Error: bad username; while reading /etc/cron.d/udrzba
Co to chce???
-
když jsem se koukl do syslogu tak to napsalo toto
Aug 21 09:08:37 chef cron[22749]: Error: bad username; while reading /etc/cron.d/udrzba
Co to chce???
To znamená, že na šestém místě není platné uživatelské jméno. Zkus něco jednoduchého, třeba
* * * * * root date >>/tmp/neco.txt
ulož to do /etc/cron.d/neco a počkej dvě minuty (restartovat cron netřeba). A pokud ani tohle nebude fungovat, máš někde nějakou zásadní chybu.
-
Ahoj,
pár tipů:
1. za příkazem musí být newline, jinak se to považuje za invalidní příkaz.
2. zkontroluj, že vlastníkem souboru pod cron.d je root a že namají k tomuto souboru přístup další uživatelé.
(chown root /etc/cron.d/*)
3. Místo cron.d můžeš použít soubor /etc/crontab (je to doporučovaná varianta), stejná syntax by měla fungovat tedy:
5 * * * * root /opt/udrzba/deletecyklusmail.sh
4. Na debianu zkontroluj ještě soubor /etc/default/cron jestli v něm není nějaká podezřelá volba...
Honza
PS.: Myslím, že to stejně bude tím chybějícím odentrováním... Apropo, když použiješ jiného
uživatele než roota, tak to funguje?
-
Tento problém som tiež riešil, a zistil som, že keď chcete spúšťať skrip z /etc/cron.d/ tak nesmie mať žiadnu príponu.
Takže že ho premenuj, nesmie mať na konci .sh
-
Tento problém som tiež riešil, a zistil som, že keď chcete spúšťať skrip z /etc/cron.d/ tak nesmie mať žiadnu príponu.
Takže že ho premenuj, nesmie mať na konci .sh
Ne, tohle plati pro /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly a prip. pro /etc/cron.hourly,
tam jmeno souboru nesmi obsahovat tecku, viz man cron:
Files must conform to the same naming convention as used by run-parts(8): they must consist solely of upper- and lower-case letters, digits, underscores, and hyphens.
Protoze tyhle adresare jsou primarne pro balicky, uzivatelske crony se davaji spis do crontabu roota (i kdyz ja to tam taky cpu..).