Portál AbcLinuxu, 13. května 2025 23:26

Dotaz: Paralelne spustenie skriptov z find-u

martin() avatar 12.3.2011 11:35 martin() | skóre: 6 | Prievidza / Bratislava
Paralelne spustenie skriptov z find-u
Přečteno: 254×
Odpovědět | Admin
Ahojte, chcel by som paralelne spustit skripty, ktore mi najde find.

Zatial mam toto:
find . -name \*.sh -executable -type f -exec /bin/bash '{}' \;
problemom je, ze ak sa prvy skript na niecom zasekne (napriklad sleep 1000), tak tie ostatne sa nespustia a budu cakat na skoncenie prveho. Skusal som aj xargs, ale vysledok bol este horsi ...

Nejake napady ? Vdaka.
Hovor múdro, nepriateľ načúva ! -- S. J. Lec --

Ř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

Řešení 1× (martin() (tazatel))
12.3.2011 12:28 chrono
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pri xargs sa dá určiť, koľko procesov môže maximálne spustiť (štandardne len jeden).
martin() avatar 12.3.2011 13:21 martin() | skóre: 6 | Prievidza / Bratislava
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u
Dakujem. Myslim, ze uz to robi to, co som chcel.

Pre buduce generacie:
find . -name \*.sh -executable -type f -print | xargs -P 0 -n 1 /bin/bash
-P 0 povoli spustenie tolkych procesov, kolko sa len da

-n 1 povoli iba jeden argument. ak by bolo za -n nieco ine, alebo default, tak by to vyprodukovalo nieco taketo: /bin/bash s1.sh s2.sh a spustilo by to iba s1.sh
Hovor múdro, nepriateľ načúva ! -- S. J. Lec --
12.3.2011 13:33 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u
Odpovědět | | Sbalit | Link | Blokovat | Admin

Ahoj.

Mozna strilim od boku, ale neslo by ty skripty poustet normalne na pozadi?

 ... -exec /bin/bash '{}' & \;

Dejv

Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
martin() avatar 12.3.2011 13:52 martin() | skóre: 6 | Prievidza / Bratislava
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u
Ahoj, tiez som to skusal ale nefunguje to:

... -exec /bin/bash '{}' & \;

find: missing argument to `-exec'

a

... -exec /bin/bash '{}' \& \;

to spusta sekvencne, jeden za druhym
Hovor múdro, nepriateľ načúva ! -- S. J. Lec --
12.3.2011 14:07 Jirka P
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u
Ale takhle
... -exec /bin/bash '{} &' \;
by to už mělo fungovat :)
martin() avatar 12.3.2011 14:44 martin() | skóre: 6 | Prievidza / Bratislava
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u
/bin/bash: ./s1.sh &: No such file or directory

...
Hovor múdro, nepriateľ načúva ! -- S. J. Lec --
12.3.2011 20:40 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u
A co takhle:
... -exec "/bin/bash '{}' &" \;
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
martin() avatar 12.3.2011 21:38 martin() | skóre: 6 | Prievidza / Bratislava
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u
find: `/bin/bash \'./s1.sh\' &': No such file or directory :)
Hovor múdro, nepriateľ načúva ! -- S. J. Lec --
12.3.2011 23:29 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u

Spíš takhle:

  find ... -exec bash -c "{} &" \;
  find ... -exec bash -c "bash {} &" \;

Ale opatrně s tím, před chvílí jsem zkusil

  find . -name '*.jpg' -exec bash -c "display {} &" \;

v adresáři, kde bylo 1125 obrázků, a systém se mnou pak pár minut nemluvil… :-)

12.3.2011 21:58 l4m4
Rozbalit Rozbalit vše Re: Paralelne spustenie skriptov z find-u
Ne, nešlo, protože -exec je skuečně jen exec, nespouští shell.

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.