abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:22 | Nová verze

    Bylo vydáno Ubuntu 26.04.1 LTS, tj. první opravné vydání Ubuntu 26.04 LTS s kódovým názvem Resolute Raccoon. Přehled novinek a oprav na Discourse.

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | Zajímavý článek

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) vydal Zprávu o stavu kybernetické bezpečnosti ČR za rok 2025 (pdf). Incidentů ubylo, sofistikovanost útočníků roste.

    Ladislav Hagara | Komentářů: 0
    dnes 00:55 | Nová verze

    Open source softwarový stack AMD ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán v nové major verzi 10.0. S ROCm.AI. Přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | Bezpečnostní upozornění

    Finanční skupina Partners se stala minulou neděli obětí kybernetického útoku, při kterém se útočníci dostali k některým osobním údajům klientů. Společnost o tom informovala ve čtvrtek. Ujišťuje, že peníze klientů nejsou v ohrožení. „Kybernetický útok zasáhl část IT infrastruktury naší společnosti. Ihned po zjištění útoku jsme s pomocí externích bezpečnostních odborníků začali intenzivně pracovat na minimalizaci škod. Útočníci se

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 03:55 | IT novinky

    Americká technologická společnost Meta Platforms se dohodla, že zaplatí až zhruba 18 miliard dolarů (asi 373 miliard Kč) za mimosoudní urovnání sporu o závislosti dětí na sociálních sítích a provede významné změny pro jejich používání mladistvými. Téměř tři desítky států USA firmu v roce 2023 obvinily z toho, že sítě Facebook a Instagram vědomě navrhla tak, aby u dětí vyvolávaly závislost, a zatajovala tyto dopady před veřejností. Firma se

    … více »
    Ladislav Hagara | Komentářů: 2
    včera 02:55 | Komunita

    Byl publikován aktuální přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Blíží se vydání podporující čipy M3. Vývojáře lze podpořit na GitHub Sponsors a Open Collective.

    Ladislav Hagara | Komentářů: 0
    26.8. 16:55 | Nová verze

    Kancelářský balík LibreOffice byl vydán ve verzi 26.8. Mimo jiné vylepšuje typografii a kompatibilitu s formáty MS Office, více v poznámkách k vydání.

    |🇵🇸 | Komentářů: 0
    26.8. 14:55 | Nová verze

    Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 26.8. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 7
    26.8. 11:44 | Nová verze

    Byla vydána nová verze 23.1.0, tj. první stabilní verze z nové řady 23.1.x, překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, LLD, Extra Clang Tools, Libc++, Polly a Flang.

    Ladislav Hagara | Komentářů: 0
    26.8. 02:11 | Nová verze

    Google Chrome 152 byl prohlášen za stabilní. Nejnovější stabilní verze 152.0.7977.64 přináší řadu novinek. Podrobný přehled v poznámkách k vydání. Opraveno bylo 327 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (19%)
     (29%)
     (7%)
     (6%)
     (2%)
     (15%)
     (22%)
    Celkem 2503 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: azcopy prerusi 'while' cyklus

    31.1.2020 16:28 GeorgeWH | skóre: 42
    azcopy prerusi 'while' cyklus
    Přečteno: 596×
    Zdravim,

    mam jednoduchy shell skript, ktory vo while cykle prechadza obsah suboru po riadkoch (kazdy riadok predstavuje subor ulozeny na ms azure storage) a zistuje, ci dany subor existuje aj lokalne na disku. Ak subor neexistuje, tak ho vymaze aj z azure storage (taka primitivna obdoba rsync).

    Problem je, ze cyklus sa stale ukonci, ked sa vymaze prvy subor z azure storage (exit status prikazu je 0). Ak samotny prikaz nevykonam, resp. ho nahradim vypisanim samotneho prikazu (ktory by sa spustil) pomocou echo, tak to funguje.

    Cast skriptu, ktora nefunguje:
    # delete remote files (if enabled)
    if [ "x$delete_remote" = "x1" ]; then
    
      while read line; do
    
        file="$(echo $line | awk -F';' '{ print $2 }')"
    
        if [ ! -f "$file" ]; then
          azcopy remove "$url/$file?$sas" >/dev/null            <=== toto ukonci cyklus pri prvej zhode
          echo "azcopy remove \"$url/$file?$sas\" >/dev/null"   <=== ak to nahradim tymto, tak je to ok
          test $? -ne 0 && error=1
        fi
      done < $remote_files_list
    fi
    
    Obsah/format suboru $remote_files_list (prve je nazov, druhe je velkost):
    ;aaa/a1;0;
    ;aaa/a2;0;
    ;aaa/a3;0;
    ;bbb/b1;0;
    ;bbb/b2;0;
    ;bbb/b3;0;
    
    Lokalne subory:
    aaa/a1
    aaa/a2
    aaa/a3
    
    takze by v azure malo postupne po jednotlivych suboroch vymazat cely adresar bbb.

    Ked spustim shell v debug mode:
    + [ x1 = x1 ]
    + read line
    + echo ;aaa/a1;0;
    + awk -F; { print $2 }
    + file=aaa/a1
    + [ ! -f aaa/a1 ]
    + read line
    + echo ;aaa/a2;0;
    + awk -F; { print $2 }
    + file=aaa/a2
    + [ ! -f aaa/a2 ]
    + read line
    + echo ;aaa/a3;0;
    + awk -F; { print $2 }
    + file=aaa/a3
    + [ ! -f aaa/a3 ]
    + read line
    + echo ;bbb/b1;0;
    + awk -F; { print $2 }
    + file=bbb/b1
    + [ ! -f bbb/b1 ]
    + azcopy remove https://azure.storage.url/path/to/bbb/b1
    + test 0 -ne 0
    + read line
    
    A cyklus sa ukonci (skript potom pokracuje dalej).

    Netusite, cim by to mohlo byt?

    Vdaka.

    Řešení dotazu:


    Odpovědi

    31.1.2020 17:00 NN
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Aby skript azcopy neovlivnil aktualni skript mohlo by stacit obalit prikaz do subshellu:
    $(azcopy remove "$url/$file?$sas" >/dev/null)
    test $? -ne 0 && error=1
    
    Tipuju ze to zhavaruje a vezme sebou celou smycku.
    31.1.2020 17:19 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Rovnaky vysledok. Skusal som exec azcopy remove ..., /bin/sh -c "/usr/bin/azcopy remove ...", eval $(echo "azcopy remove ..."), nic, stale sa cyklus ukonci po prvom odstraneni suboru, a azcopy skonci bez chyby (je to vidno aj v tom debugu).

    Co ma napada je, ze azcopy nejakym sposobom "vymaze" data predane while cyklu. Je to mozne?

    Skusim este stace.
    31.1.2020 18:07 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Odporučil by som nahlásiť tento bug na podporu MS Azure, tam patrí azcopy a jeho panické obhospodarovanie výnimiek.
    Řešení 1× (Michal Kubeček)
    Jendа avatar 31.1.2020 20:49 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    azcopy ... < /dev/null
    31.1.2020 20:27 debian+
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Nestaci iba:?
    (azcopy remove "$url/$file?$sas" >/dev/null)
    Řešení 1× (GeorgeWH (tazatel))
    31.1.2020 19:57 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Pouzil som for miesto while a uz to funguje.
    31.1.2020 20:21 NN
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    WTF?
    31.1.2020 20:37 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Miesto
    while read line; do
      ...
    done < $remote_files_list
    som pouzil
    for line in $(cat $remote_files_list); do
      ...
    done
    a toto funguje.
    Jendа avatar 31.1.2020 20:48 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    No sežere to zbytek vstupu z toho přesměrování a tím to skončí. Si zkus
    cat /proc/cpuinfo | while read l; do echo $l; cat - > /dev/null; done
    Tohle je obecně věc co nevím jak by se v Bashi měla řešit -- for cyklus nejde dělat když má člověk v těch věcech mezery (a současně chce původní IFS), u while je příjemné, že čte po řádcích. Ale zase to má tenhle problém.
    3.2.2020 14:57 kolega
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    jo tohle je pak otravny resit pres \0 a xargs ...
    4.2.2020 10:02 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Tohle je obecně věc co nevím jak by se v Bashi měla řešit

    A o minutu později jsi sám řešení navrhl. :-)

    Mimochodem, konstrukce

      cmd | while read v; do ... ; done
    

    má ještě jeden háček: while cyklus se při ní provádí v subshellu, takže proměnné nastavené v těle cyklu se nedostanou "ven" (nelze takto předávat hodnoty zbytku skriptu). Naštěstí to bash umožňuje obejít pomocí

      while read v; do ... ; done < <( cmd )
    

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.