Fórum Root.cz

Hlavní témata => Server => Téma založeno: host 20. 08. 2013, 09:32:28

Název: Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: 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??
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: DK 20. 08. 2013, 09:36:06
Kód: [Vybrat]
5 */1 * * * sh /opt/udrzba/deletecyklusmail.sh
a mimoto staci pouzit jenom crontab -e
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: host 20. 08. 2013, 09:50:33
udělal jsem a spustil se mi textový editor a v něm crontab... co tím chtěl básník říct????
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: DK 20. 08. 2013, 09:53:09
upravit, ulozit a nic se restartovavat nemusi
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: host 20. 08. 2013, 09:55:25
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...
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: DK 20. 08. 2013, 10:08:42
tak znovu
Kód: [Vybrat]
5 */1 * * * sh /opt/udrzba/deletecyklusmail.sh je spravny prikaz

root je uzivatel, ne prikaz, .sh je treba spoustet pomoci prikazu sh (pripadne ./)
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: host 20. 08. 2013, 11:15:47
Tak to co si psal výše nefunguje...
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: Ed 20. 08. 2013, 11:22:08
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
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: host 20. 08. 2013, 12:14:04
zase nic :-/
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: jvb 20. 08. 2013, 12:47:55
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ý.
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: host 20. 08. 2013, 13:24:51
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
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: pavele 20. 08. 2013, 17:12:46
Odstraň ze jména toho skriptu tečku, nech tam jen "deletecyklusmail".
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: B 20. 08. 2013, 18:17:14
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á...
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: host 21. 08. 2013, 09:35:31
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....
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: host 21. 08. 2013, 09:38:47
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???
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: Ondřej Caletka 21. 08. 2013, 10:05:48
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
Kód: [Vybrat]
* * * * * root date >>/tmp/neco.txtulož 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.
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: Jan Nejman 21. 08. 2013, 17:38:44
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?
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: Dudo 23. 08. 2013, 08:40:46
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
Název: Re:Spouštění .sh skriptu v /etc/cron.d
Přispěvatel: core 23. 08. 2013, 10:20:28
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..).