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

    Yocto Project byl vydán ve verzi 5.0. Její kódové jméno je Scarthgap. Yocto Project usnadňuje vývoj vestavěných (embedded) linuxových systémů na míru konkrétním zařízením. Cílem projektu je nabídnou vývojářům vše potřebné. Jedná se o projekt Linux Foundation.

    Ladislav Hagara | Komentářů: 0
    dnes 17:56 | Nová verze

    Operační systém 9front, fork operačního systému Plan 9, byl vydán v nové verzi "do not install" (pdf). Více o 9front v FQA.

    Ladislav Hagara | Komentářů: 0
    dnes 13:11 | Nová verze

    Svobodná webová platforma pro sdílení a přehrávání videí PeerTube (Wikipedie) byla vydána v nové verzi 6.1. Přehled novinek i s náhledy v oficiálním oznámení a na GitHubu. Řešeny jsou také 2 bezpečnostní chyby.

    Ladislav Hagara | Komentářů: 3
    dnes 12:33 | Zajímavý software

    Lennart Poettering na Mastodonu představil utilitu run0. Jedná se o alternativu k příkazu sudo založenou na systemd. Bude součástí systemd verze 256.

    Ladislav Hagara | Komentářů: 12
    včera 23:22 | Nová verze

    Hudební přehrávač Amarok byl vydán v nové major verzi 3.0 postavené na Qt5/KDE Frameworks 5. Předchozí verze 2.9.0 vyšla před 6 lety a byla postavená na Qt4. Portace Amaroku na Qt6/KDE Frameworks 6 by měla začít v následujících měsících.

    Ladislav Hagara | Komentářů: 11
    včera 21:44 | Komunita

    Ubuntu 24.10 bude Oracular Oriole (věštecká žluva).

    Ladislav Hagara | Komentářů: 11
    včera 20:22 | Nová verze

    Byla vydána nová verze 2.45.0 distribuovaného systému správy verzí Git. Přispělo 96 vývojářů, z toho 38 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání. Vypíchnout lze počáteční podporu repozitářů, ve kterých lze používat SHA-1 i SHA-256.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | IT novinky

    Před 25 lety, ve čtvrtek 29. dubna 1999, byla spuštěna služba "Úschovna".

    Ladislav Hagara | Komentářů: 0
    včera 01:00 | Nová verze

    Byla vydána nová verze 24.04.28 s kódovým názvem Time After Time svobodného multiplatformního video editoru Shotcut (Wikipedie) a nová verze 7.24.0 souvisejícího frameworku MLT Multimedia Framework. Nejnovější Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    28.4. 16:33 | Nová verze Ladislav Hagara | Komentářů: 0
    KDE Plasma 6
     (75%)
     (8%)
     (2%)
     (15%)
    Celkem 887 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Dotaz: Oprava scriptu

    11.3.2013 12:52 TT
    Oprava scriptu
    Přečteno: 556×
    Ahoj, proč mi podmínka pořád vyhodnocuje exit, i když stejný program není spuštěn? Je to kontrolováno přímo ze scriptu který se kontroluje. Díky
    ps aux | grep -v "grep" | grep -q "/home/foo.sh"
    if [ $? -eq 0 ]; then
       exit
    else
       # echo "pokračuji.."
    fi

    Odpovědi

    11.3.2013 13:00 potato
    Rozbalit Rozbalit vše Re: Oprava scriptu
    Dotaz nedává moc smysl. exit se spustí, když je návratový kód roury nula. Ten je nula, pokud byl poslední příkaz v rouře úspěšný (pokud nenastavils v bashi pipefail). grep je úspěšný, pokud něco našel. Proč něco našel, nelze z dodaných informací říci, ale když odstraníš -q, tak zjistíš, co našel.

    Celé grepování výstupu ps je navíc zvrácené, ps má volby typu -C, které umožňují filtrovat podle příkazu a -o, které umožňuje vypisovat o příkazu jen to, co chceš.
    11.3.2013 13:45 TT
    Rozbalit Rozbalit vše Re: Oprava scriptu
    Tak zkusím lepe položit dotaz, potřebuji zjistit, jestli script již nebeží, jelikož je povolena poze jediná instance programu, a jelikož spouštím to zjištění přímo z toho scriptu který to má zjistit, tudíž je to komplikovanější a podmínka by asi měla být něco jako
    if [$res -lt 2 ]
    ale nevím jak na to..
    11.3.2013 13:47 TT
    Rozbalit Rozbalit vše Re: Oprava scriptu
    Pokud odstraním -q tak to najde jednou spuštěný script, asi ten ze kterého se ten test, což dáva smysl, ale jak zjsitit jestli je spuětěn jednou nebo vícekrát?
    11.3.2013 13:56 ubka7617
    Rozbalit Rozbalit vše Re: Oprava scriptu

    if [ $(pgrep -c foo.sh)  -eq 0  ]; then
    echo nebezi
    else
    echo bezi

    fi

    11.3.2013 14:17 TT
    Rozbalit Rozbalit vše Re: Oprava scriptu
    Výsledek je vždy 0 i když běží program vícekrát..
    11.3.2013 14:31 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Oprava scriptu

    Aj takto je vysledok 0 ? :

    #! /bin/bash
    if [[ "$(pgrep -c "${0##*/}")" -eq 0 ]]
    then
        echo nebezi
    else
        echo bezi
    fi

    Ja len, ci si nezabudol zamenit foo.sh za nazov tvojho skriptu. Nic v zlom, sa mi aj horsie uz stalo. :)

    11.3.2013 14:56 TT
    Rozbalit Rozbalit vše Re: Oprava scriptu

    Ja len, ci si nezabudol zamenit foo.sh za nazov tvojho skriptu. Nic v zlom, sa mi aj horsie uz stalo. :)

    Ano, stává se to i mě ;-) ale v tomto případě se to opravdu soubor tak jmenuje. No pokud v tom tvém kodu změním -eq 0 za -eq 1 tak to funguje jak má.. Díky moc
    11.3.2013 16:55 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Oprava scriptu

    Akurat, ze to v tom pripade nefunguje. Logicky je to nespravne, bo ak je pocet beziacich procesov s tymto nazvom rovny 1, tak dalsi uz nespustim a ak je rovny 0, tak ho spustim a toto je presne moj kod a tvoje zadanie.

    Skus dat do svojho kodu nasledovne:

    echo '==== kontrola ===='
    echo "skript: $0"
    echo "vypis procesov:"
    ps xau | grep "${0##*/}"
    echo '=== koniec ===''

    a na zaciatok skriptu, hned za shebang daj

    set -x

    a daj sem vsetko, co to vypluje.

    11.3.2013 17:10 TT
    Rozbalit Rozbalit vše Re: Oprava scriptu
    Tady to je..

    root@debian:~# ./foo.sh
    ++ echo '==== kontrola ===='
    ==== kontrola ====
    ++ echo 'skript: ./foo.sh'
    skript: ./foo.sh
    ++ echo 'vypis procesov:'
    vypis procesov:
    ++ grep foo.sh
    ++ ps xau
    root     13932  0.0  0.0   6544   880 pts/2    S+   17:09   0:00 grep foo.sh
    ./foo.sh: řádek 7: neočekávaný konec souboru při hledání znaku odpovídajícímu „'“
    ./foo.sh: řádek 8: chyba syntaxe: nenadálý konec souboru
    root@debian:~#
    11.3.2013 19:45 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Oprava scriptu

    Skor som mal na mysli, ze by si to pridal k tomu svojmu kodu, mozno by sa ukazalo, co sa skutocne deje. U mna to funguje spravne a este minimalne dalsi clovek z tohto vlakna to potvrdil. A najlepsie, tak s uz spustenym procesom a bez taktiez.

    11.3.2013 20:33 TT
    Rozbalit Rozbalit vše Re: Oprava scriptu
    No mě to běží s tou jedničkou bez problémů, čili to tak nechám akorát bych potřeboval dát do té podmínky pevný název
    if [[ "$(pgrep -c "${0##*/}")" -eq 0 ]]
    zkoušel jsem to takto ale nejde to
    if [[ "$(pgrep -c "foo.sh")" -eq 0 ]]
    díky
    11.3.2013 21:09 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Oprava scriptu

    Ak pouzijes premennu, tak sa nemusis nikdy starat. Ak to das napevno, tak niekomu das kod, pomenuje si skript inak a uz to nepojde, ako ma. A prechadzat skript, ze kde to este je pouzite, ze mi to pada stale, neviem, su aj zaujimavejsie veci, co riesit. Inak napevno, ako si to ukazal, neviem.

    p.s.: Ak ti to bezi s jednickou, tak niekde musi byt zrada, ale kod tu cely nie je. Takze to je na tebe.

    12.3.2013 13:52 TT
    Rozbalit Rozbalit vše Re: Oprava scriptu
    To je sice pravda, ale problém je v tom, že ten soubor sourcnu do toho foo.sh a tím pádem už to nefunguje, jelikož se to provede v tom sourcovaném souboru, jelikož tam je automatické zjištění názvu, což už není foo.sh :-(
    12.3.2013 14:51 Patrik Uhrak | skóre: 31 | blog: pato
    Rozbalit Rozbalit vše Re: Oprava scriptu

    To nie je ziaden problem, vid nasledujuce (dva skripty, jeden test1.bash a druhy test2.bash ):

    #! /bin/bash
    source test2.bash "$0"
    echo "nazov skriptu z test1.bash: ${0##*/}"
    #! /bin/bash
    echo "nazov hlavneho skriptu zo sourcovaneho test2.bash: ${1##*/}"

    Jednoducho je to iba o predavani parametrov.

    12.3.2013 15:37 potato
    Rozbalit Rozbalit vše Re: Oprava scriptu
    A proč to filtruješ podle názvu procesu namísto pidu toho shellu, který je v $$?
    11.3.2013 15:30 TT
    Rozbalit Rozbalit vše Re: Oprava scriptu
    ještě jedna věc,

    když nahradím tohle
    if [[ "$(pgrep -c "${0##*/}")" -eq 0 ]]
    za tohle
    if [[ "$(pgrep -c "foo.sh")" -eq 0 ]]
    tak to přestane fungovat, proc? Díky
    11.3.2013 14:44 ubka7617
    Rozbalit Rozbalit vše Re: Oprava scriptu

    vola sa to foo.sh ? som to skusal a v pohode funguje spravne

    11.3.2013 14:57 TT
    Rozbalit Rozbalit vše Re: Oprava scriptu
    Ano volá se to foo.sh a u mě to nefunguje, což je divný že u tebe ano :-(

    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.