Portál AbcLinuxu, 10. května 2025 06:39

Dotaz: cron spouštení příkazu postupně

13.3.2013 17:22 Derata
cron spouštení příkazu postupně
Přečteno: 403×
Odpovědět | Admin
Dobrý den

Chtěl bych se zeptat jestli jde nějak v cronu zajistit aby se skript pustil až po tom co je ukončen předchozí?

Když mam skript ve kterém vytvářím určitý typ souboru každy den a udržuju poslední 4 soubory takže nejstarší se maže a jendou tydne chci nejstarší soubor překopírovat jiným skriptem. Jde mi o to aby se první zkoroval a potom až smazal.

Nebo popřípadě jak by to šlo jinak zajistit? Pokud bych to neřešil nastavením času spuštění v cronu

Děkuji za odpoved

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.3.2013 18:36 Petr MOTEJLEK
Rozbalit Rozbalit vše Re: cron spouštení příkazu postupně
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ahoj. Samotny cron nic takoveho nema. Budes si muset poradit svepomoci napr. nejakym souborem na disku. Tvuj skript by si otestoval, zda soubir existuje, pookud ano, vypnul by se. Pokud by neexistoval, cytvorol by ho, udelal, co ma a pak soubor tesne pred koncem smazal.

Talhle si ale jen zajistis, ze ti skript v jednu chvili nepobezi soucasne. kdybys potrebocal, aby skript opravdu pockal, az skonci predchozi, bude potreba nejaky cyklus. Mozna by pak uzbylo lepsi pouzivat sleep prikaz a mit jeden velky sjript s nekonecnymcyklem, nez mit cron :)
AraxoN avatar 13.3.2013 19:10 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: cron spouštení příkazu postupně
Ja to riešim zreťazením cez operátor && v rámci cronu:
0 * * * 1-6 ~/bin/skript1.sh
0 * * * 7   ~/bin/skript1.sh && ~/bin/skript2.sh
Pozn: operátor && kontroluje exit kód toho čo je naľavo a ak to neskončilo chybou, iba vtedy spustí to čo je vpravo. To môže tiež byť užitočné.
13.3.2013 19:55 pavel
Rozbalit Rozbalit vše Re: cron spouštení příkazu postupně
Cron ti toto nezajistí, řešení je mnoho.

Například si vytvoříš jeden skript, který budeš spouštět každý den. Jeho součástí bude i to překopírování nejstaršího souboru:
#!/bin/bash

#Zamykani proti vicenasobnemu spusteni tohoto skriptu
#ve stejny okamzik
lockfile="/tmp/cron_mujskriptik.lock"
if [ -z "$flock" ] ; then
  lockopts="-w 0 $lockfile"
  exec env flock=1 flock $lockopts $0 "$@"
fi

denvtydnu=`date +%u`

#prvni cast
echo "Nazdar"
prvnicastok=$?

if [ "$prvnicastok" = "0" ]; then
  echo "Skript 1 dopadl dobre, muzem pokracovat"
  else
    echo "Je to spatny, koncim"
    exit 1
fi

#Druha cast, spousti se kazdou stredu
if [ "$denvtydnu" = "3"]; then
  echo "Uz je cas, je streda!"
fi

14.3.2013 00:33 Derata
Rozbalit Rozbalit vše Re: cron spouštení příkazu postupně
Moc díky!

že já si to vždycky zbytečně komplikuji... do skriptu jsem dal podmínku že se provede když je neděle a překopíruje se zadaná složka jindy se tato část neprovede.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.