Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Cron. Nespouští skript.  (Přečteno 3667 krát)

koperator

  • Návštěvník
  • Příspěvků: 48
Cron. Nespouští skript.
« kdy: 06 Listopadu 2014, 12:16:19 »
Ahoj
V editore     crontab -e     som zadal spustanie skriptov

# m h  dom mon dow   command
*/10 * 6 * * (cd /home/kopera; ./rm_rmk1.sh)
*/1 * * * * (cd /home/kopera/1_servis/Cron; ./1_rm_clean.sh)


prvi prikaz funguje bez problemov.
Duhy mi nefunguje aj ked som prihlaseny. Ak prikaz napisem do terminalu, tak funguje.


V  etc/sudoers mam na konci zadefinovane:
kopera ALL=NOPASSWD:/home/rs_rmk1.sh
kopera ALL=NOPASSWD:/home/1_servis/Cron/1_rs_clean.sh

Vsetky subory maju atribut spustitelnych.
Predpokladam najaku chybu v ceste. Vyskusal som rozne varianty ale uz si neviem rady.

Dakujem.
« Poslední změna: 27 Listopadu 2014, 14:35:06 od koperator »

jmp

  • Host
Re:Cron. Nespouští skript.
« Odpověď #1 kdy: 06 Listopadu 2014, 12:56:46 »
v sudoers neseděj jména skriptů ani cesty

nespouštíte to pomocí sudo (což nebude vadit, půjde-li o crontab roota)

nemáte v crontabu plné cesty, ani shell, který má být použit pro interpretaci těch skriptů


juwa2

  • Závislák
  • ***
  • Příspěvků: 4936
Re:Cron. Nespouští skript.
« Odpověď #2 kdy: 06 Listopadu 2014, 13:34:31 »
úlohy ke spouštění pomocí cronu zadávej pomocí prográmku "Naplánované úlohy" (z Centra SW). Je to jednoduché a spolehlivé - než se s tím trápit v crontabu.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Cron. Nespouští skript.
« Odpověď #3 kdy: 06 Listopadu 2014, 13:53:27 »
1) to cd pred spustenim skriptu je desive .. proste dej celou cestu
2) v sudoers je rozdil mezi `/celou/cestou/ke/skriptu' a potom jeho spoustenim aka `./skript'
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

koperator

  • Návštěvník
  • Příspěvků: 48
Re:Cron. Nespouští skript.
« Odpověď #4 kdy: 06 Listopadu 2014, 14:05:53 »
Tie rozdielne názvy možno vyzerajú, že to tak nemá byť ale ja volám jedným skriptom druhý. Potrebujem skontrolovať príkazom "mdadm --detail /dev/md1" stav raidu, druhý skript porovná, čo zahlási prvý a ak je podmienka splnená potom pošle e-mail. Preto som dal na ukážku aj fungujúci skript a potom druhý nefungujúci.
Aká je potom plná cesta ak som užívateľ KOPERA a nefungujúci skript je v adresáry "1_servis/Cron" ?
Prvý fungujúci skript je priamo v adresáry HOME.

ďakujem.

juwa2

  • Závislák
  • ***
  • Příspěvků: 4936
Re:Cron. Nespouští skript.
« Odpověď #5 kdy: 06 Listopadu 2014, 14:30:09 »
/home/KOPERA/1_servis/Cron

koperator

  • Návštěvník
  • Příspěvků: 48
Re:Cron. Nespouští skript.
« Odpověď #6 kdy: 06 Listopadu 2014, 14:44:28 »
Neviem, kde robím chybu, skúsim to napísať ešte inak:

Prihlasovacie meno: kopera
Spustitelný skript, ktorý funguje je definovaný v CRON tým to riadkom

*/1 * * * * (cd /home/kopera; ./rm_rmk1.sh)

skúsil som dať preč to cd, mám teraz v CRONe takýto riadok

*/1 * * * * /home/kopera/rm_rmk1.sh          - ale prestalo to fungovať

prečo niekto dporučuje to  cd pred príkazom a niekto nie?
Nefunguje mi to rovnako.
Kde je pes zakopaný?

Prosím ešte o trpezlivú odpoveď.

juwa2

  • Závislák
  • ***
  • Příspěvků: 4936
Re:Cron. Nespouští skript.
« Odpověď #7 kdy: 06 Listopadu 2014, 15:35:40 »
(2) úlohy ke spouštění pomocí cronu zadávej pomocí prográmku "Naplánované úlohy" (z Centra SW). Je to jednoduché a spolehlivé - než se s tím trápit v crontabu.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Cron. Nespouští skript.
« Odpověď #8 kdy: 06 Listopadu 2014, 15:51:36 »
(2) úlohy ke spouštění pomocí cronu zadávej pomocí prográmku "Naplánované úlohy" (z Centra SW). Je to jednoduché a spolehlivé - než se s tím trápit v crontabu.

vytvorit ulohu v crontabu neni pro vetsinu lidi zadne "trapeni", takze se prosim zbytecne neopakuj ..
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

juwa2

  • Závislák
  • ***
  • Příspěvků: 4936
Re:Cron. Nespouští skript.
« Odpověď #9 kdy: 06 Listopadu 2014, 16:06:01 »
1. Pro většinu možná ne - pro tazatele zjevně ano - pokud sis stačil všimnout.
2. A moje rada k cíli vede - na rozdíl od...

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Cron. Nespouští skript.
« Odpověď #10 kdy: 06 Listopadu 2014, 16:08:34 »
1. Pro většinu možná ne - pro tazatele zjevně ano - pokud sis stačil všimnout.
2. A moje rada k cíli vede - na rozdíl od...
hadat se s tebou nehodlam ...


nicmene pro tazatele .. udelej ulohu samozrejme v crontabu uzivatele, kterej to ma spoustet a ne pres sudo .. to je jako drbat se levou rukou za pravym uchem .. pokud proste potrebujes prava roota pro tvuj konkretni skript, tak proste pridej tu ulohu do crontabu roota
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

koperator

  • Návštěvník
  • Příspěvků: 48
Re:Cron. Nespouští skript.
« Odpověď #11 kdy: 06 Listopadu 2014, 16:39:24 »
Chcel by som vas poziadat este.
V terminali napisem takyto prikaz:

kopera@ubuntu:~$ sudo /home/kopera/1_servis/cron/3rm_clean.sh
Nov 06 16:35:39 ubuntu sendEmail[4065]: Email was sent successfully!
kopera@ubuntu:~$

ten je ako vidis uspesny. Ako to napisem do toho CRONa?
povedzme nech sa to pusta kazdu hodinu.

Možeš ma prosím viesť krok za krokom?
Chcem aby sa ten príkaz spúšťal aj po reštarte a aby som nemusel byť prihlásený ak je to možné.

Takže prvý krok by bol, že v termináli napíšem
1.
som prihlásený ako  "kopera"
sudo crontab -e                     

je to tak správne?
môžem tú úlohu mať v "/home/kopera/1_servis/cron/3rm_clean.sh" alebo to mám presunúť do iného
adresára?

Dakujem.
« Poslední změna: 06 Listopadu 2014, 16:55:00 od koperator »

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Cron. Nespouští skript.
« Odpověď #12 kdy: 06 Listopadu 2014, 17:09:05 »
Kód: [Vybrat]
# aby ses prihlasil jako root .. slo by i `sudo bash'
sudo -i

# abys oeditoval ten crontab uz pod rootem tak
crontab -e

to neni vubec zadna veda .. do toho crontabu proste dej co potrebujes s plnou cestou .. pokud to ma spoustet jen root, tak bych to fakt asi dal do neceho jako /root/bin
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

koperator

  • Návštěvník
  • Příspěvků: 48
Re:Cron. Nespouští skript.
« Odpověď #13 kdy: 06 Listopadu 2014, 19:51:52 »
Ahoj.
Skúšal som otvoriť adresár "root" ale vypisalo to niečo v zmysle, že nemám dostatočné práva.
Ako sa dostanem do adresára "root".
Prečo mi môj skript spúšťa len z domovského adresára

/home

a ignoruje cestu

/home/kopera/1_servis/cron ?

ak to napíšem do terminálového riadku tak skript funguje perfektne.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Cron. Nespouští skript.
« Odpověď #14 kdy: 06 Listopadu 2014, 20:04:01 »
1) protoze logicky abys mohl neco zapsat do adresare k rootovi tam musis byt jako root prihlasenny

2) protoze tu cestu (opet logika) asi zadavas spatne. "Cron" neni to stejne co "cron"
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

koperator

  • Návštěvník
  • Příspěvků: 48
Re:Cron. Nespouští skript.
« Odpověď #15 kdy: 07 Listopadu 2014, 06:25:53 »
Ja chápem, že aj veľkosť písma je braná do úvahy.
Mal som pocit,že CRON neviem čítať veľké písmená, preto som všetko popremenovával
na malé.
Ospravedlňujem za sa ten zmätom ale fakt si už neviem rady.

Ako sa prihlásim ako ROOT. Mám naištalovaný Ubuntu 14.10 server mám aj grafické rozhranie.
Na PC mám užívateľa "kopera" a nejaký "Guest". Ten CRON vie nájsť len skript
v adresáry HOME, ďalej to už nevie čítať.

Na internete je zapísaný príkaz iným spôsobom než to musím zapísať ja.
Je možné, že mám nainštalované niečo, čo sa podobá CRONu.
Ako zistím akú verziu, zrovna používam?
« Poslední změna: 07 Listopadu 2014, 08:44:29 od koperator »

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Cron. Nespouští skript.
« Odpověď #16 kdy: 07 Listopadu 2014, 10:05:11 »
"ospravedlnovat" se nemusis, spis si precti zaklady ;) http://wiki.ubuntu.cz/p%C5%99%C3%ADkazov%C3%A1_%C5%99%C3%A1dka

1) jako root staci byt prihlaseny v prikazove radce .. uz jsi to delal pri vytvareni crontabu, tzn `sudo -i' a nebo `sudo bash' .. potom pomoci prikazu mkdir vytvoris (pokud neexistuje) /root/bin a pomoci cp tam zkopirujes tvoje skripty

2) cron ma svuj log, kde pise, co dela .. je to neco jako /var/log/cron.log nebo tak nejak .. najdi ho a zkontroluj ..
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

koperator

  • Návštěvník
  • Příspěvků: 48
Re:Cron. Nespouští skript.
« Odpověď #17 kdy: 07 Listopadu 2014, 16:20:15 »
Ďakujem za trpezlivú pomoc a link.
Už som v root.
Skúsim v tom niečo polaborovať.

Nech sa ti darí.

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Cron. Nespouští skript.
« Odpověď #18 kdy: 07 Listopadu 2014, 16:37:27 »
Ďakujem za trpezlivú pomoc a link.
Už som v root.
Skúsim v tom niečo polaborovať.

Nech sa ti darí.
a podarilo se ti teda dosahnout ceho jsi chtel ? tys totiz za celou tu dobu neukazal moc "technickych vstupu" a je ani nechtel .. pokud ti to furt nejde, tak ukaz nejaky relevantni radek (radky) z logu crona, obsah toho skriptu a vystup z prikazu (pod rootem) `crontab -l'
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

koperator

  • Návštěvník
  • Příspěvků: 48
Re:Cron. Nespouští skript.
« Odpověď #19 kdy: 27 Listopadu 2014, 14:39:11 »
Za ten čas som vyskúšal preinštalovať Ubuntu (teraz som nainštaloval rozhranie MATE).
Problém stále pretrváva. Vyriešil som to tak, že som si vytvoril nového užívateľa a do adresára HOME,
kde to funguje bez problémov som dal tie skripty. Na účet toho nového užívateľa na neprihlasujem
aby som omylom nevymazal tie skripty a mne neprestralo fungovanie kontroly RAID1. Takže som si poradil ako som vedel.
Tu dole dávam opis terminálu.

Časť výpisu v CRONTAB -e.
"*/2 * * * * (cd /home/kopera; ./5rm_all.sh)"  - funguje
"*/3 * * * * (cd /home/kopera/1_servis/cron; ./rm_all.sh)"  - nefunguje

Kód: [Vybrat]
#
# m h  dom mon dow   command
*/2 * * * * (cd /home/kopera; ./5rm_all.sh)
*/3 * * * * (cd /home/kopera/1_servis/cron; ./rm_all.sh)


Ak príkaz napíšem do terminálu, všetko funguje.
Skúšal som rôzne varianty zápisu cesty, ale nanič som neprišiel.
Kód: [Vybrat]
kopera@TX100S3:~$ sudo ./1_servis/cron/rm_all.sh
Nov 27 14:33:34 tx100s3 sendEmail[6411]: Email was sent successfully!
kopera@TX100S3:~$
e-mail teda odišiel, ale CRON to nevie spustiť.
V popise CRON help alebo aj na internete je zápis cesty príkazu takýto

Kód: [Vybrat]
/home/kopera/1_servis/cron/rm_all.sha nie ako musím používať ja
Kód: [Vybrat]
cd /home/kopera/1_servis/cron; ./rm_all.sh

Prečo je to tak?
Možno tam je niekde problém.

Ďakujem.



« Poslední změna: 27 Listopadu 2014, 14:49:43 od koperator »

marun

  • Stálý člen
  • **
  • Příspěvků: 601
Re:Cron. Nespouští skript.
« Odpověď #20 kdy: 27 Listopadu 2014, 16:20:12 »
ja i myslím že je to tím že cd je funkce bashe
takže to udělěj takto
Kód: [Vybrat]
*/3 * * * * (bash -c " cd /home/kopera/1_servis/cron; ./rm_all.sh ")

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:Cron. Nespouští skript.
« Odpověď #21 kdy: 27 Listopadu 2014, 18:15:02 »
ja i myslím že je to tím že cd je funkce bashe
takže to udělěj takto
Kód: [Vybrat]
*/3 * * * * (bash -c " cd /home/kopera/1_servis/cron; ./rm_all.sh ")
boze a proc neco takhle ohyzdneho ?????

ma tam bejt normalne:

*/3 * * * * /cesta/ke/skriptu -a --pripadne --nejake=parametry

Videl jsem to vlakno, kde ten gentleman resi proc ten skript nejde (tak, jak predpoklada, ze ma jit) a nebudu na nej jiz vice reagovat .. napsal jsem jiz v tomto vlakne co je s tim spatne, komu neni rady, tomu neni pomoci .. (se skriptem i s cronem)











ale abych alespon trosku klamal telem a ukazal lidskou tvar (kterou normalne nenosim), tak si pouzij skript co jsem ti napsal, uloz si ho do souboru, dej mu chmod +x a spust ho pomoci

Kód: [Vybrat]
/cesta/k/tomu/skriptu /dev/md101
nevytiskne nic, to je umyslne, ale to co ti rika najdes ulozeno ve "/var/tmp/jmeno_skriptu.log", takze si to prosim precti a vyres si sve problemy s cronem upravou toho skriptu .. ten skript ocekava jeden parametr a sice cestu k tomu zarizeni, takze si ho poprvy opravdu pust s necim co neexistuje aka /dev/md101, protoze jinak se nedozvis, co ti chce rict


uz ale prosim nepokracuj v opakovani dokola stejnych hruz a neposlouchani, co ti zde lide rikaji .. proc to nejde, proc nemas pouzivat sudo ve skriptech co bezi pod rootem (crontab roota, na co sudo) a jak vytvorit ulohu v cronu jmse tady napsali 20x



Kód: [Vybrat]
#!/bin/bash

_log_p=/var/tmp/`basename $0`;
_log_debug=$_log_p.debug;
_log_out=$_log_p.log;

exec 2>$_log_debug;
exec >$_log_out;
set -x;

_device=$1;
_date_s=`date +%Y%m%d%H%M%S`;


posli_mi_majla_ze_se_to_podelalo() {

cp $_log_debug $_log_debug.$_date_s;
cp $_log_out $_log_out.$_date_s;

cat << EOF

tady si za domaci ukol muzes udelat tu svoji funkci na posilani maila misto
tohodle textu ..

soubor s logem najdes v: $_log_out.$_date_s
pripadne debug log v: $_log_debug.$_date_s

skript si samozrejme zmen dle potreby .. a nezapomen si na konci tyhle
funkce dat navratovou hodnotu ty veci co posila mejl ;) pomoci return X


hints:

a) skripty v cronu by NEMELY mit zadny vystup, jinak cron posila mejly, proto
na zacatku nastavuju pomoci exec(), kam pujde /dev/stdout a kam /dev/stderr

b) co tady asi potrebujes jako navratovou hodnou, aby cron vedel ze skript
funguje ? samozrejme tu z posilani mejla .. Tenhle skript posila mejl a musi
tedy indikovat, zda-li to dopadlo dobre a nebo ne. Proto je dulezity ten
vyse zmineny return() na vyskoku z tehle funkce, mdadm je nam fuk

c) pridej si nejake rotovani tech logu .. skript to vubec neresi .. proste
vytvori ten soubor pokazdy, kdyz mdadm --detail indikuje problem

d) pridej si tam taky neco jako, ze pokud je to zfailovany, tak aby to neposilalo
kazdych N minut majla, tak to vytvori nejakej soubor se zamkem, kterej bude existovat,
dokud to nebude spraveny (to si ho potom smaze) a nebo dokud ho nesmazes sam.

e) precti si manpage, jake navratove hodnoty ma mdadm --detail ....

EOF




#### pripominam zmenit 0 v returnU navratove hodnoty (treba $?) toho prikazu s mejlem
return 0;
};


if ! mdadm --detail "$_device" 2>&1; then
posli_mi_majla_ze_se_to_podelalo;
exit $?;
fi

exit 0;
« Poslední změna: 27 Listopadu 2014, 18:24:39 od ntz_reloaded »
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

 

Provoz zaštiťuje spolek OpenAlt.