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í
×
    včera 23:33 | Nová verze

    Společnost comma.ai po třech letech od vydání verze 0.9 vydala novou verzi 0.10 open source pokročilého asistenčního systému pro řidiče openpilot (Wikipedie). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    včera 21:55 | Nová verze Ladislav Hagara | Komentářů: 0
    včera 14:11 | IT novinky

    Řada vestavěných počítačových desek a vývojových platforem NVIDIA Jetson se rozrostla o NVIDIA Jetson Thor. Ve srovnání se svým předchůdcem NVIDIA Jetson Orin nabízí 7,5krát vyšší výpočetní výkon umělé inteligence a 3,5krát vyšší energetickou účinnost. Softwarový stack NVIDIA JetPack 7 je založen na Ubuntu 24.04 LTS.

    Ladislav Hagara | Komentářů: 2
    včera 00:44 | Bezpečnostní upozornění

    Národní úřad pro kybernetickou a informační bezpečnost (NÚKIB) spolu s NSA a dalšími americkými úřady upozorňuje (en) na čínského aktéra Salt Typhoon, který kompromituje sítě po celém světě.

    Ladislav Hagara | Komentářů: 21
    27.8. 16:33 | IT novinky

    Společnost Framework Computer představila (YouTube) nový výkonnější Framework Laptop 16. Rozhodnou se lze například pro procesor Ryzen AI 9 HX 370 a grafickou kartu NVIDIA GeForce RTX 5070.

    Ladislav Hagara | Komentářů: 1
    27.8. 14:22 | IT novinky

    Google oznamuje, že na „certifikovaných“ zařízeních s Androidem omezí instalaci aplikací (včetně „sideloadingu“) tak, že bude vyžadovat, aby aplikace byly podepsány centrálně registrovanými vývojáři s ověřenou identitou. Tato politika bude implementována během roku 2026 ve vybraných zemích (jihovýchodní Asie, Brazílie) a od roku 2027 celosvětově.

    Fluttershy, yay! | Komentářů: 7
    27.8. 13:11 | Nová verze

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

    Ladislav Hagara | Komentářů: 0
    27.8. 05:11 | Komunita

    Alyssa Anne Rosenzweig v příspěvku na svém blogu oznámila, že opustila Asahi Linux a nastoupila do Intelu. Místo Apple M1 a M2 se bude věnovat architektuře Intel Xe-HPG.

    Ladislav Hagara | Komentářů: 18
    26.8. 12:55 | IT novinky

    EU chce (pořád) skenovat soukromé zprávy a fotografie. Návrh "Chat Control" by nařídil skenování všech soukromých digitálních komunikací, včetně šifrovaných zpráv a fotografií.

    Ladislav Hagara | Komentářů: 67
    26.8. 12:11 | Nová verze

    Byly publikovány fotografie a všechny videozáznamy z Python konference PyCon US 2025 proběhlé v květnu.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (79%)
     (9%)
     (3%)
     (4%)
     (5%)
     (1%)
    Celkem 104 hlasů
     Komentářů: 9, poslední včera 11:53
    Rozcestník

    Dotaz: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly

    7.8.2020 17:18 GeorgeWH | skóre: 42
    Presmerovanie stdout len do suboru a stderr do suboru aj konzoly
    Přečteno: 457×
    Zdravim.

    Uz sa s tym piplam dve hodiny a nic. Mam sh (nie bash) skript, ktoreho standardny a error vystup chcem ulozit do suboru a zaroven na konzolu vypisat len error hlasky. Skusal som kadejake variacie s exec, ale stale som mal bud vsetko v konzole a prazdny subor alebo naopak alebo nikde nic...

    Najlepsie by bolo, keby bolo vsetko vyriesene v skripte, ale uspokojil by som sa aj s variantou, ked by napr. ./moj-skript.sh >/dev/null do konzoly vypisal len chybu a do suboru vsetko a ./moj-skript.sh by vypisal vsetko do konzoly aj suboru.

    Skript moj-skript.sh:
    #!/bin/sh
    #
    
    # nejako nastavene presmerovanie stdout a stderr do suboru moj-skript.log
    # a zaroven presmerovanie stderr na konzolu
    ???
    
    /bin/ls /etc/fstab
    /bin/ls /nonexists
    
    Vystup skriptu
    $ ./moj-skript.sh
    ls: /nonexists: No such file or directory
    
    Obsah log suboru moj-skript.log
    /etc/fstab
    ls: /nonexists: No such file or directory
    
    Vdaka.

    Řešení dotazu:


    Odpovědi

    xkucf03 avatar 7.8.2020 17:48 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly

    Tohle dělá, co chceš:

    #!/bin/sh
    
    funkce() {
    	/bin/ls /etc/fstab
    	/bin/ls /nonexists
    }
    
    
    mkfifo out.fifo
    mkfifo err.fifo
    mkfifo xxx.fifo
    
    cat out.fifo > xxx.fifo &
    cat err.fifo | tee xxx.fifo &
    cat xxx.fifo > xxx.log &
    
    funkce 1> out.fifo 2> err.fifo
    
    wait
    wait
    wait
    
    rm -f out.fifo err.fifo xxx.fifo
    

    Ale nelíbí se mi to, říkám si, že by to mělo jít jednodušeji…

    Navíc je tam problém s úklidem při nějaké chybě a s tím, že se ti můžou zprávy zapsané do STDOUT a STDERR prolnout.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    7.8.2020 19:32 GeorgeWH
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly
    Ten ls bol len na demonstraciu pozadovaneho vysledku. Robit taketo upravy je dost nerealne.
    xkucf03 avatar 7.8.2020 20:58 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly

    Pak asi tohle: #4, případně tam ještě přidat ten sed z #7.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    7.8.2020 17:49 pavele
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly
    tee
    xkucf03 avatar 7.8.2020 17:58 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly

    Můžeš to rozvést?

    V Bashi jde dosadit proces místo cesty k souboru, otázka je, jak ty výstupy pak zase spojit do jednoho… Možná nějak adaptovat tenhle příklad… ale tohle jsou docela zběsilosti – do toho článku jsem to dával spíš jako odstrašující příklad :-)

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    xkucf03 avatar 7.8.2020 18:12 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly

    P.S. Tak trochu funguje tohle:

    funkce 2> >(tee -a xxx.log) >> xxx.log

    ale nelíbí se mi ten zápis do jednoho souboru ze dvou procesů bez jakékoli synchronizace…

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    7.8.2020 19:17 jejda | skóre: 26 | blog: jejda
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly
    Taky si můžeš ten error z logu jednoduše grepnout.
    #!/bin/sh
    log=moj-skript.log
    for file in /etc/fstab /nonexists; do
      /bin/ls $file >> $log 2>&1
      tail -1 $log | grep "^/bin/ls: "
    done
    7.8.2020 19:54 jiwopene | skóre: 31 | blog: Od každého trochu…
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly
    ( ./moj-skript.sh 2> >( tee /dev/stderr ) | sed '' ) > moj-skript.log
    Ten sed zajišťuje bufferování řádku podobné tomu, které se používá u výstupu na terminál. stderr zůstává stderr.
    .sig virus 3.2_cz: Prosím, okopírujte tento text do vaší patičky.
    7.8.2020 21:45 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly
    Vysledok je ok, ale potreboval by som to dostat priamo do toho skriptu, aby ho jednoducho stacilo spustit a aby to bolo hlavne blbovzdorne.
    Jendа avatar 7.8.2020 22:07 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly
    Jsem zagůglil bash replace stdout of current script a první odkaz říká že by na začátku mělo jít udělat exec a>b a to efektivně změní všechen výstup skriptu.

    A před tím první, co mě napadlo bez googlení, bylo napsat si modul do bashe, který nahradí file deskriptory 1 a 2, a zavést ho pomocí enable -f :-D
    xkucf03 avatar 7.8.2020 22:16 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly

    Ten exec se normálně používá, ale problém je, že on tady chce STDERR rozdvojit, jednou ho poslat na terminál a jednou ho spojit s STDOUT a společně poslat do souboru.

    V tom modulu bys musel řešit to samé – číst současně ze dvou FD a data z jednoho posílat na terminál a data z obou posílat do souboru.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    Řešení 1× (GeorgeWH (tazatel))
    7.8.2020 22:09 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly
    Tak uz to mam, stacilo to supnut do skriptu a nie je to az take zle. Akurat to funguje len v bash-i, ale tak co uz (vsetky skripty sa snazim pisat v shell-i):
    #!/bin/bash
    #
    
    (
    
    echo "INFO: log iba do suboru"
    ls /etc/fstab
    
    echo "ERROR: log do suboru aj na konzolu" >&2
    ls /nonexists
    
    echo "INFO: log iba do suboru"
    
    echo "ERROR: log do suboru aj na konzolu" >&2
    
    ) 2> >( tee /dev/stderr ) | sed '' > moj-skript.log
    
    Vdaka.
    xkucf03 avatar 7.8.2020 22:26 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Presmerovanie stdout len do suboru a stderr do suboru aj konzoly

    Případně se to ještě řeší tak, že na začátek skriptu dáš IF, ve kterém zkontroluješ nějakou proměnnou, pokud není nastavená, tak ji nastavíš a spustíš sám sebe s tím přesměrováním:

    #!/bin/bash
    
    if [ -z "$XXX" ]; then
    	export XXX=x;
    	echo "spouštím s přesměrováním";
    	"$0" "$@" &>1;
    fi
    
    echo "původní skript";
    echo "parametry: " "$@";

    Tohle se hodí i v případě, že potřebuješ potřebuješ třeba přepsat nebo doplnit nějaké CLI parametry.

    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes

    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.