Portál AbcLinuxu, 16. července 2025 21:03


Dotaz: Rychlejsi spousteni scriptu

12.7.2005 23:33 Doktor
Rychlejsi spousteni scriptu
Přečteno: 210×
Odpovědět | Admin
Rad bych se zeptal.. existuje neco rychlejsiho na spousteni scriptu, nez je Cron s nastavenou 1 minutou opakovani ? Pro priklad.. kdyz mam script ktery mi neco kontroluje, a ja potrebuji treba okamzitou odezvu.. nebo kratsi interval spousteni scriptu.. existuje neco rychlejsiho (casove kratsi usek) na opakovane spousteni scriptu?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.7.2005 23:40 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
while true; do cokoliv; done
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
12.7.2005 23:44 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
A kdyby to bylo moc rychlé, pak sleep(1) nebo usleep(1).
12.7.2005 23:43 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Záleží na tom, na co ta odezva má být. V některých případech to může jít i jinak, než jen pravidelným kontrolováním.
13.7.2005 00:07 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud chceš něco kontrolovat hodně často, nespouštěj milionkrát nějaký program, ale spusť program jednou, ať běží a tu věc kontroluje. Události na souborech lze sledovat funkcemi select() či poll() s prakticky nulovou zátěží procesoru. Ukončení procesů lze obvykle sledovat tak, že je spustíš jako potomky a připojíš se na SIGCHLD nebo použiješ waitpid(), opět s nulovou zátěží CPU.
13.7.2005 00:42 Doktor
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
Ano to je velice zajimave.. mohl by jste mi prosim jen upresnit vetu Ukončení procesů lze obvykle sledovat tak, že je spustíš jako potomky a připojíš se na SIGCHLD nebo použiješ waitpid(), opět s nulovou zátěží CPU. na konkretnim pripadu nejakem jednoduchem?
13.7.2005 01:33 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
info libc

sekce Processes, jsou tam i příklady

13.7.2005 08:57 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
while :
do
  echo $(date) Start >>/var/log/cokoli.log
  cokoli &
  wait $!
  echo $(date) Konec >>/var/log/cokoli.log
done
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
13.7.2005 13:33 Doktor
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
umm.. potreboval bych jen trochu nakopnout abych to pochopil... muzete mi prosim ukazat to na prikladu... kdy je permanentne spusteny script: "load" ktery kontroluje zda je load na serveru mensi nez 5.. a pokud bude vetsi nez 5, okamzite treba vypise na terminal "Load je XX" ? Moc by mi to pomohlo abych to pochopil. Dekuji.
13.7.2005 20:49 Doktor.
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
Nasel by se nekdo kdo by napsal jednoduchy priklad?
13.7.2005 21:32 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
Soubory v /proc se chovají poněkud neobvykle, takže loadavg musíš stejně číst furt dokola, select() či poll() je na nic. Např. takhle (loadavg je minutový průměr, který se přepočítává jen jednou za 5s):
load_is_at_least() { local l=$(</proc/loadavg); test ${l%%.*} -ge $1; }
while load_is_at_least 5; do sleep 5; done
echo Hurá
13.7.2005 21:36 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
while read load1 load5 load15 rest </proc/loadavg ; do
    if test "${load1%.*}" -ge 5; then
        echo "Load >= 5"
    fi
    sleep 1
done
13.7.2005 21:40 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
No vida, jak se ta jinak nepraktická konstrukce

while read <soubor

dá pěkně upotřebit. To mě nenapadlo.
13.7.2005 22:29 Doktor
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
Ano funguje to krasne.. ale mam problem ze ten script nemuzu spustit na pozadi. Pokud ho spustim, napr: ./test &, tak script bezi na pozadi.. ale pri jakemkoliv dalsim prikazu,.. nebo jen po zmacknuti Enter.. se script zastavi: [1]+ Stopped ./test. Jak tedy udelam aby bezel script na pozadi i po opusteni konzole (putty)?
13.7.2005 22:38 Kala | skóre: 9
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
Zkus treba program screen.
14.7.2005 01:01 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
Raději opravit rozbitý shell. Akorát nevím, co je na něm rozbitého. Máš normální bash? Je sleep normální sleep? Která část způsobuje to zastavení?

BTW zastaví se nejspíš okamžitě, při stisknutí Enteru ti to akorát shell oznámí.
13.7.2005 09:19 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Rychlejsi spousteni scriptu
alias kanarek='sleep 10'
log=/var/log/kanarci.log

a() {
  echo -e "$(date) Umrel\n$(date) Start noveho" >> $log
  kanarek &
}

b() {
  trap - CHLD
  kill -SIGTERM $(jobs -lp)
  echo "$(date) Mel jsem deset kanaru, uz nemam." >> $log
  exit 0
}

trap a CHLD
trap b TERM INT QUIT

for i in $(seq 10); do kanarek & done

echo "$(date) Ja mam deset kanarku" >> $log

wait

echo "$(date) What's fucking hapend?" >> $log
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.

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.