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 spouští - nespouští úlohy [vyřešeno]  (Přečteno 2987 krát)

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Cron spouští - nespouští úlohy [vyřešeno]
« kdy: 25 Února 2011, 09:06:18 »
Opravdu jsem bojoval a to dost dlouho, ale už nevím..

Tady je skript:
Citace
#!/bin/bash

#################################### POPIS ###########################################
#                                   #
#            Tento soubor nechat spouštět cronem dle důležitosti dat           #
#                      Dojde k zálohám přednastavených cest               #
#           Každý měsíc pak dojde k přesunu záloh do složky archive           #
#                                   #
######################################################################################

########################### Nastavení proměnných #################################################

root=`cat /etc/passwd | grep 1000`
declare -a var;
var=(`echo "$root" | tr ':' ' '`);
root_user=${var[0]};

backsys="/home/$root_user/.backsys";
BACKUP=`cat $backsys/destination | grep DATA | awk '{print $2}'`
BACKUP_DATA="$BACKUP/DATA"
log="$backsys/LOGS/data.log"
LOGS="$backsys/LOGS";
data="$backsys/DATA/option_data";
file=`date +%y%m%d_%H%M%S`
check_date=`date +%y%m`
backup_date=`date +%y%m%d --date="1 month ago"`

row=`cat $data | wc -l`
list=`cat $data | grep 1000`
declare -a var;
var=(`echo "$list" | tr ':' ' '`);
user=${var[0]};

######################################## FUNKCE ##################################################

zaloha() {

if [ "$BACKUP" == "" ]; then
   echo
   echo -e "\033[31m Nebyla zadána cesta pro uložení DAT. Najeďte do nastavení společných cest a definujte cílovou cestu zálohy\033[0m";
   exit

elif [ ! -s $data ]; then
   echo
   echo -e "\033[31m Není nastavena cesta k zálohování. Najeďte do nastavení DAT a nastavte cesty\033[0m";
   exit
else

cd $BACKUP_DATA
for ((i=1; $i<=$row; i=$i+1)); do

   backup_way=`head -n $i $data | tail -1`
   list=(`echo "$backup_way" | tr '/' ' '`);
   pole=(`echo ${list
  • }`)

   fldr_num=`echo ${list
  • } | wc -w`;

   fldr_num=`expr $fldr_num - 1`;
   folder_name=${pole[$fldr_num]};
   file2=$folder_name"_"$file.tgz;

   tar cpzf $file2 $backup_way 2> $LOGS/$folder_name.log
   status=`echo $?`;

   if [ $status -eq 0 ]; then
            echo "`date` - ZÁLOHA DAT NA CESTĚ \"$backup_way\" ÚSPĚŠNĚ DOKONČENA ($file2)" >> $log

   else
           echo "`date` - !!! ZÁLOHA DAT NA CESTĚ \"$backup_way\" DOKONČENA SE STATUSEM: $status !!!" >> $log
        fi;
   sleep 1s;

done
fi
}

##################################################################################################

if [ ! -d $BACKUP_DATA ]; then mkdir -p $BACKUP_DATA/archive; echo "empty" > /tmp/DATA.bs; fi;
if [ ! -d $backsys/LOGS ]; then mkdir -p $backsys/LOGS; fi;

cd $BACKUP_DATA
if [ ! -f /tmp/DATA.bs ]; then
   ls | grep "$check_date" > /dev/null;
   stat=`echo $?`;
   if [ "$stat" -eq "1" ]; then touch /tmp/DATA.bs; fi;
fi;
tmp=`cat /tmp/DATA.bs 2> /tmp/err`;

if [ "$tmp" != "empty" -a -f /tmp/DATA.bs ]; then
   mv $BACKUP_DATA/*.tgz $BACKUP_DATA/archive
fi;
zaloha

if [ -f /tmp/DATA.bs ]; then rm /tmp/*.bs 2> /dev/null; fi;

###################################################################################################

exit

Výpis z cronu:

Citace
20 23 * * * /home/user/.backsys/DATA/backup_data.sh > /tmp/err_data.log

Když tuto cestu k souboru jen zkopíruju a vložím do shellu, tak se vše provede korektně.. Soubor /tmp/err_data.log se také vytvoří v přesně daný čas:

-rw-r--r--  1 root root    0 2011-02-24 23:20 err_data.log

ale skript se prostě neprovede ...hledal jsem tady podobné problémy, ale tam se to vyřešilo např tím, že se vyhodil z TARu parametr "v", který tam já nemám..Spouštím to pod rootem..zkoušel jsem udělat soubor "start_backup_data.sh" a do něj jen cestu k souboru backup_data.sh, ale taky nepomohlo...prostě záloha se neprovede, ale přitom se zdá, že se v daný čas něco spustilo (vytvořilo ten soubor v /tmp)..už nevím co mu může vadit :(



EDIT:  A zajímavá je ještě jedna věc...když ráno vstanu a podívám se, že se zálohy neprovedly, díval jsem se někdy v 7:20 ráno a dal jsem do cronu čas spuštění 7:22, počkal 2 minuty a záloha se provedla ...skript se spustil a vše proběhlo ok ...prostě nechápu, proč když to spustím za 2 minuty, tak se provede a když to naplánuju na někdy v noci, tak se neprovede ...nepomohl ani přesun skriptu do /etc/cron.daily
« Poslední změna: 10 Srpna 2011, 08:57:13 od On »
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

daysleeper

  • Stálý člen
  • **
  • Příspěvků: 1206
Re: Cron spouští - nespouští úlohy
« Odpověď #1 kdy: 25 Února 2011, 11:00:07 »
pridej tam i vypis chyb (stderr)
Kód: [Vybrat]
20 23 * * * /home/user/.backsys/DATA/backup_data.sh > /tmp/err_data.log 2>&1
mrkni se i do logu (syslog), co to v tu dobu (23:20) pise

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re: Cron spouští - nespouští úlohy
« Odpověď #2 kdy: 25 Února 2011, 11:22:33 »
stderr jsem tam doplnil, tak uvidíme zítra ...

Jinak výpisy z logu:

(zálohy mi to dělá dvě, čili jedná se o dva soubory, ale se stejným problémem..posílám výpisy ze syslogu z obou dvou)

23:10

Citace
Feb 24 23:10:01 dzo CRON[18493]: (root) CMD (/home/ladik/.backsys/DB/start_db.sh > /tmp/err_db.log)
Feb 24 23:10:01 dzo postfix/pickup[18484]: 2DF0910017A: uid=0 from=<root>
Feb 24 23:10:01 dzo postfix/cleanup[18497]: 2DF0910017A: message-id=<20110224221001.2DF0910017A@dzo>
Feb 24 23:10:01 dzo postfix/qmgr[2093]: 2DF0910017A: from=<root@dzo.cz>, size=546, nrcpt=1 (queue active)
Feb 24 23:10:01 dzo postfix/local[18499]: 2DF0910017A: to=<root@dzo.cz>, orig_to=<root>, relay=local, delay=0.15, delays=0.11/0.01/0/0.04, dsn=2.0.0, status=sent (delivered to mailbox)
Feb 24 23:10:01 dzo postfix/qmgr[2093]: 2DF0910017A: removed

23:20

Citace
Feb 24 23:20:01 dzo CRON[18505]: (root) CMD (/home/ladik/zaloha/skripty/permission.sh)
Feb 24 23:20:01 dzo CRON[18506]: (root) CMD (/home/ladik/.backsys/DATA/start_data.sh > /tmp/err_data.log)
Feb 24 23:20:01 dzo postfix/pickup[18484]: 3DE351001C7: uid=0 from=<root>
Feb 24 23:20:01 dzo postfix/cleanup[18513]: 3DE351001C7: message-id=<20110224222001.3DE351001C7@dzo>
Feb 24 23:20:01 dzo postfix/qmgr[2093]: 3DE351001C7: from=<root@dzo.cz>, size=556, nrcpt=1 (queue active)
Feb 24 23:20:01 dzo postfix/pickup[18484]: 4B260FFC84: uid=0 from=<root>
Feb 24 23:20:01 dzo postfix/cleanup[18513]: 4B260FFC84: message-id=<20110224222001.4B260FFC84@dzo>
Feb 24 23:20:01 dzo postfix/local[18515]: 3DE351001C7: to=<root@dzo.cz>, orig_to=<root>, relay=local, delay=0.15, delays=0.1/0.01/0/0.04, dsn=2.0.0, status=sent (delivered to mailbox)
Feb 24 23:20:01 dzo postfix/qmgr[2093]: 3DE351001C7: removed
Feb 24 23:20:01 dzo postfix/qmgr[2093]: 4B260FFC84: from=<root@dzo.cz>, size=536, nrcpt=1 (queue active)
Feb 24 23:20:01 dzo postfix/local[18515]: 4B260FFC84: to=<root@dzo.cz>, orig_to=<root>, relay=local, delay=0.21, delays=0.16/0/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox)
Feb 24 23:20:01 dzo postfix/qmgr[2093]: 4B260FFC84: removed


...a teď je jdu prostudovat :) díky za navedení, to mě nenapadlo kurnik


EDIT:

Spustil jsem skript opět cronem, nastavil jsem opět, aby se spustil za 2 minuty ...opět se vše provedlo korektně..výpis z logu:

Citace
Feb 25 11:26:53 dzo kernel: [325114.851483] IPT INPUT packet died: IN=eth0 OUT= MAC=00:26:55:6e:67:b7:00:26:5a:32:05:09:08:00 SRC=83.240.93.197 DST=192.168.1.200 LEN=107 TOS=0x00 PREC=0x00 TTL=55 ID=3106 DF PROTO=TCP SPT=53826 DPT=27015 WINDOW=1002 RES=0x00 ACK PSH URGP=0
Feb 25 11:27:01 dzo CRON[20781]: (root) CMD (/home/ladik/.backsys/DB/start_db.sh > /tmp/err_db.log 2>&1)
Feb 25 11:27:12 dzo kernel: [325134.225452] IPT INPUT packet died: IN=eth0 OUT= MAC=00:26:55:6e:67:b7:00:26:5a:32:05:09:08:00 SRC=83.240.93.197 DST=192.168.1.200 LEN=148 TOS=0x00 PREC=0x00 TTL=55 ID=9261 DF PROTO=TCP SPT=54475 DPT=26098 WINDOW=1675 RES=0x00 ACK PSH URGP=0
Feb 25 11:27:33 dzo kernel: [325155.485749] IPT INPUT packet died: IN=eth0 OUT= MAC=00:26:55:6e:67:b7:00:24:1d:91:f1:f9:08:00 SRC=192.168.1.101 DST=192.168.1.200 LEN=937 TOS=0x00 PREC=0x00 TTL=128 ID=13222 DF PROTO=TCP SPT=49454 DPT=80 WINDOW=16377 RES=0x00 ACK PSH URGP=0


Poslal jsem sice asi víc řádků než bylo třeba (to jen pro jistotu), ten cronový je ale hádám jen tento:
Feb 25 11:27:01 dzo CRON[20781]: (root) CMD (/home/ladik/.backsys/DB/start_db.sh > /tmp/err_db.log 2>&1)

a vše bylo ok..proč to teda nedělá i v noční čas je mi zatím stále záhadou
« Poslední změna: 25 Února 2011, 11:31:46 od On »
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re: Cron spouští - nespouští úlohy
« Odpověď #3 kdy: 26 Února 2011, 10:10:24 »
Tak nový poznatek je ten, že jsem sice přidal stderr, ale hlavně jsem místo roota to nechal spouštět pod svým uživatelským jménem a záloha se opravdu provedla...ještě zkusím ten druhý skript...kdyby to fungovalo, tak je problém sice vyřešen, ale i tak nechápu, proč to nezafungovalo pod rootem..

Navíc jsem zkoušel ten skript upravit tak, aby tam bylo jen to nejpodstatnější co se týká záloh (čili proměnné, mysqldump a tar..)..a tento upravený skript se nespustil ani pod tím mým jménem..opět to v logu vypisovalo ty řádky o postfixu..což je teda taky divné
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: Cron spouští - nespouští úlohy
« Odpověď #4 kdy: 26 Února 2011, 10:36:07 »
Už jsem tady s cronem něco řešil. Měl jsem -v přepínač už nevim u čeho a kecalo mi to na std. výstup a to se cronu nelíbilo, po přesměrování do nullu v pohodě. Zkusim to najít...

Tomáš Břinčil

  • Občanské sdružení Ubuntu ČR
  • Závislák
  • ***
  • Příspěvků: 1610
  • moje obrázky ↓
    • TomasBrincil.cz
Re: Cron spouští - nespouští úlohy
« Odpověď #5 kdy: 26 Února 2011, 10:39:25 »
http://forum.ubuntu.cz/index.php/topic,44401.0.html
Je to tak, už jsem to řešil.
BTW: nečetl jsem celý tvůj script, jen předpokládám, že chyba by mohla být tady. Pokud je na první pohled jasné, že to není ono, tak mě nekamenujte ;D

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re: Cron spouští - nespouští úlohy
« Odpověď #6 kdy: 26 Února 2011, 18:44:22 »
No, tvůj příspěvek jsem právě našel, psal jsem to v tomhle threadu hned v mém prvním příspěvku :)

Citace
....hledal jsem tady podobné problémy, ale tam se to vyřešilo např tím, že se vyhodil z TARu parametr "v", který tam já nemám..Spouštím to pod rootem..zkoušel jsem udělat soubor "start_backup_data.sh" a do něj jen cestu k souboru backup_data.sh, ale taky nepomohlo...prostě záloha se neprovede, ale přitom se zdá, že se v daný čas něco spustilo (vytvořilo ten soubor v /tmp)...

mám tam "tar cpzf" ..u tebe to ale z cronu předpokládám nezafungovalo vůbec, u mě to zafunguje, když si to naplánuju v aktuální dobu, aby se to spustilo třeba za 2 minuty...to se z cronu normálně provede...proč se to ale kruci fix teda neprovede v noci...nebo...co mu v tom čase vadí..podle mě je tohle bug ...není přece možné, abych si nastavil, že se po dvou minutách má spustit - a on se opravdu spustí a korektně provede a v jiný čas zase ne resp se spustí (vytvoří to ten logovací soubor v /tmp), ale skript se neprovede...to musí být bug jak když vyšije :) Možná jsem asi zapomněl dodat, že se jedná o Ubuntu 10.04 LTS SERVER ..mohl bych to zkusit i na 10.10 DESKTOP mě tak napadá :)
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re: Cron spouští - nespouští úlohy [vyřešeno]
« Odpověď #7 kdy: 28 Února 2011, 08:45:42 »
Tak pokud to cron spouští s právy uživatele, nikoliv s právy roota, tak vše proběhne korektně ...divné, ale funguje..
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re: Cron spouští - nespouští úlohy [vyřešeno]
« Odpověď #8 kdy: 30 Června 2011, 08:37:18 »
Hm, opět se z nějakého důvodu přestaly úlohy z cronu spouštět :( Teda NE všechny ...třeba skript na úpravu oprávnění se spouští korektně ..posílá mi to také SMS-ky, takže postfix by měl být též v pořádku...viz log níže

Všechno fungovalo až do nějakého dne (předpokládám nějaké aktualizace), bylo to už někdy v dubnu, chtěl jsem to vyřešit sám, ale prostě ne a ne..
Aktuální stav je takový, že.....

ono to funguje ...pokud je aktuální čas 8:30 a já dám spuštění na 8:31, tak to funguje ...čili všechno by mělo být v pořádku... Jak je možné, že když nastavím čas na nějaký noční (nebo jakýkoliv, který je od aktuálního času v rozmezí několik hodin), tak to nejde ...nezkoušel jsem minutu po minutě, kdy už je to na něj moc :) Pokud tento čas 8:31 nechám nastavený do dalšího dne, tak se ale stejně nespustí..

Výpis z logu dnes, pokud jsem to pustil za minutu:

Citace
Jun 30 08:27:01 server CRON[11162]: (ladik) CMD (/home/ladik/cron1d)
(soubor cron1d obsahuje linky na soubory, které se mají spouštět denně) - tady vše funguje


Výpis logu ze včerejška v nastavený čas 21:10

Citace
Jun 29 21:10:01 server CRON[9575]: (ladik) CMD (/home/ladik/cron1d)
Jun 29 21:10:01 server postfix/pickup[9533]: 752EDFF977: uid=1000 from=<ladik>
Jun 29 21:10:01 server postfix/cleanup[9579]: 752EDFF977: message-id=<20110629191001.752EDFF977@server>
Jun 29 21:10:01 server postfix/qmgr[1342]: 752EDFF977: from=<ladik@server.cz>, size=506, nrcpt=1 (queue active)
Jun 29 21:10:01 server postfix/local[9582]: 752EDFF977: to=<ladik@server.cz>, orig_to=<ladik>, relay=local, delay=0.18, delays=0.12/0.01/0/0.05, dsn=2.0.0, status=sent (delivered to mailbox)
Jun 29 21:10:01 server postfix/qmgr[1342]: 752EDFF977: removed


proč proč proč proč proč, když to ve dřívějším čase funguje..?? Postfix musí být taky v pořádku, posílá mi to SMS i klasické e-maily pravidelně, kdy potřebuji..
« Poslední změna: 30 Června 2011, 10:09:16 od On »
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re: Cron spouští - nespouští úlohy [znovu otevřeno]
« Odpověď #9 kdy: 13 Července 2011, 11:35:30 »
Po nějaké době se to "SAMO" začalo zase spouštět a následující den opět "SAMO" přestalo spouštět ...opravdu nemá nikdo nějaké rozumné vysvětlení??

Správný Log z 12.7.2011 v čase 10:12

Citace
Jul 12 10:12:01 server CRON[15836]: (ladik) CMD (/home/ladik/cron.1d /tmp/err.cron 2>&1)


Chybový log z 13.7.2011 v čase 10:12

Citace
Jul 13 10:12:01 server CRON[18838]: (ladik) CMD (/home/ladik/cron.1d /tmp/err.cron 2>&1)
Jul 13 10:12:01 server postfix/pickup[18663]: E82B7F709A: uid=1000 from=<ladik>
Jul 13 10:12:01 server postfix/cleanup[18842]: E82B7F709A: message-id=<20110713081201.E82B7F709A@server.server.cz>
Jul 13 10:12:02 server postfix/qmgr[1701]: E82B7F709A: from=<ladik@server.cz>, size=548, nrcpt=1 (queue active)
Jul 13 10:12:02 server postfix/local[18845]: E82B7F709A: to=<ladik@server.cz>, orig_to=<ladik>, relay=local, delay=0.26, delays=0.18/0.01/0/0.08, dsn=2.0.0, status=sent (delivered to mailbox)
Jul 13 10:12:02 server postfix/qmgr[1701]: E82B7F709A: removed

Jeden den to prostě funguje, následující už ne ..bez jakýchkoliv mých změn..
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re: Cron spouští - nespouští úlohy [znovu otevřeno]
« Odpověď #10 kdy: 20 Července 2011, 09:03:49 »
Zkoušel jsem i měnit interpretr skriptu, tedy místo #!/bin/bash jsem zkusil #!/bin/sh, zkusil jsem skript spouštět /usr/bin/sh /cesta/ke/skriptu.sh, ale pořád nic ...opět stále platí, že když to nechám spustit cronem za pár minut, tak se provede. Později nebo na druhý den už ale ne..

pořád nikdo neví, co by to mohlo mít na svědomí nebo co ještě vyzkoušet? Ani NTZ? :)

Skripty v php se mi spouští, tak přemýšlím, že to asi udělám v php (ikdyž jiné shellové se spouští taky, jen ne tenhle), pač pravidelné zálohy prostě potřebuji
« Poslední změna: 20 Července 2011, 09:12:19 od On »
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

On

  • Stálý člen
  • **
  • Příspěvků: 1136
    • Operační systémy
Re: Cron spouští - nespouští úlohy [znovu otevřeno - ??? NTZ ???]
« Odpověď #11 kdy: 10 Srpna 2011, 08:56:57 »
Tak vyřešil jsem to podobným způsobem jako předtím ...předtím jsem to vyřešil tak, že jsem skript nemohl spouštět jako root, ale jako user...teď, když mi to tak podivně ukládá jako user1, tak jsem vytvořil user2 a pod ním vše funguje :-) Jsem přesvědčen, že se jedná o bug ...ale opět to tedy považuji za vyřešené
Asus M2A-VM HDMI, Athlon 64 X2 4800+, 4GB DDR2/800Mhz,Powercolor HD 2600 XT, Ubuntu 10.10
Být posledním nevadí, ale nikdy nesmíte být poslední dvakrát po sobě - Iacocca

 

Provoz zaštiťuje spolek OpenAlt.