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 23:11 | Bezpečnostní upozornění

    Soutěž Pwn2Own Ireland 2026 skončila 9. října. Bezpečnostní výzkumníci získali celkem 1 262 000 dolarů na odměnách. Během soutěže bylo předvedeno zneužití 98 zero-day zranitelností. Testování zahrnovalo různé kategorie zařízení a software. Výzkumníci předváděli prakticky fungující útoky podle pravidel soutěže. Výsledky následně slouží výrobcům při přípravě oprav. Mezi pokořenými jsou: Samsung Galaxy S26, OpenAI Codex, Oracle Autonomous AI Database, Google Pixel 10, u iPhone 17 neuspěli.

    vencour | Komentářů: 0
    včera 22:44 | Nová verze

    Programovací jazyk Python byl vydán v nové major verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 5
    včera 22:33 | Zajímavý projekt

    BIGWORDS.PAGE je open-source webová aplikace, která po otevření odkazu v prohlížeči vykreslí přes celou obrazovku jednoduché informační sdělení. Zpráva i její nastavení jsou uložené v části URL za znakem #, například odkaz https://bigwords.page/#abclinuxu zobrazí jako velký bílý nápis 'abclinuxu' na černém pozadí. Obsah odkazu lze upravovat i vestavěným editorem, ten umožňuje nastavovat formátování a vizuální efekty textu, časovače, QR kódy a obrázky. Zdrojový kód je dostupný pod licencí MIT na GitHubu.

    ❗Červivý Hřib krade❗ | Komentářů: 8
    včera 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 14
    včera 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 11
    včera 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 12
    včera 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 2
    včera 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

    Ladislav Hagara | Komentářů: 0
    včera 03:11 | Komunita

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 1
    8.10. 21:33 | Zajímavý projekt

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2828 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: cron a restart skriptu

    10.5.2024 18:10 jejda | skóre: 27 | blog: jejda
    cron a restart skriptu
    Přečteno: 613×
    Ahojte! Potřeboval bych na routeru s openwrt pravidelně, třeba jednou za den restartovat běžící skript. Když mám nastavené toto:
    0 0 * * * kill $(pgrep -f pokus) && sh /root/pokus.sh > /tmp/pokus.log 2>&1
    
    chová se to tak, že skript se o půlnoci sice ukončí, ale už se znovu nespustí.

    Provizorně jsem to obešel rozepsáním příkazu na dva řádky
    0 0 * * * kill $(pgrep -f pokus)
    1 0 * * * sh /root/pokus.sh > /tmp/pokus.log 2>&1
    
    ale to je zas naprd v tom (když pominu ten minutový výpadek), že takto cron ten skript spustí i když předtím třeba vůbec neběžel. Když by to bylo celé na jednom řádku a testovala se návratová hodnota programu kill, skript by se spouštěl jenom v případě jestliže se ho podařilo předtím zabít. Podle nápovědy by to na jednom řádku mohlo fungovat, no bohužel. Důvod proč ten skript chcu restartovat je ten, že skript generuje nezanedbatelné množství výstupu do souboru /tmp/pokus.log a nechcu aby mě ten log bobtnal do nekonečna a na routeru tak postupně vyžral celou paměť. Když celý ten příkaz zadám ručně do terminálu:
    kill $(pgrep -f pokus) && sh /root/pokus.sh > /tmp/pokus.log 2>&1 &
    
    tak všecko funguje jak má. Běžící skript se zabije, velikost logu se resetne na nulu a skript se spusti znovu. Když skript neběží, nedělá to nic. Takto bych potřeboval aby to fungovalo aji z crona. Co s tím?

    Řešení dotazu:


    Odpovědi

    10.5.2024 18:28 carbon
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    dej ty prikazy do skriptu a z crona volej ten skript (cron nekdy nema PATH, takze prikazy musi mit abs. cesty, nektere znaky jsou zakazane a musi se escapovat, atp...)

    tj. cron

    0 0 * * * /root/mujskript.sh

    a /root/mujskript.sh

    kill $(pgrep -f pokus) && sh /root/pokus.sh > /tmp/pokus.log 2>&1
    Jendа avatar 10.5.2024 19:11 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Přesně tak.

    A jinak druhá možnost je použít příkaz timeout (možná bude potřeba doinstalovat coreutils-timeout) a pak spouštět v nekonečné smyčce
    while sleep 1; do
      timeout /root/pokus.sh
    done
    
    (ten sleep 1 tam je aby pokud skript okamžitě skončí nějakou chybou, se to netočilo se 100% vytížením furt dokola)
    10.5.2024 20:51 jejda | skóre: 27 | blog: jejda
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    To se ale chová stejně. crontab vypadá pokusně takto. Mělo by se to spouštět každou minutu.
    * * * * * sh /root/cron-pokus.sh
    skript /root/cron-pokus.sh vypadá takto:
    #!/bin/sh
    kill $(pgrep -f pokus) && sh /root/pokus.sh > /tmp/pokus.log 2>&1
    
    a samotný /root/pokus.sh vypadá takto:
    #!/bin/sh
    while sleep 5; do date '+%Y-%m-%d %H:%M:%S'; done
    
    Když skript neběží, neděje se nic. To je v pořádku. Ručně skript spustím:
    sh /root/pokus.sh > /tmp/pokus.log 2>&1 &
    
    v momentě jak naskočí nová minuta tak se script /root/pokus.sh ukončí, ale nová instance se už nespustí. pgrep -f pokus nevypisuje nic, žádný PID.

    Když ten spouštěcí meziskript /root/cron-pokus.sh upravím na:
    #!/bin/sh
    while sleep 1; do
      timeout 59 /root/pokus.sh > /tmp/pokus.log 2>&1
    done
    
    Tak se mi to zas spouští každou minutu bez ohledu na to jestli byl předtím už puštěný nebo ne a taky se to spouští paralelně furt dokola, takže po třech minutách už pgrep -f pokus ukazuje už devět procesů a další neustále přibývají. Se do toho začínám trochu zamotávat už :-(
    10.5.2024 21:03 X
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Resil jsem podobny problem tak, ze skript v Pythonu bezel porad a opakovane spousteni si resil sam bez cronu. 50c
    10.5.2024 22:03 pavele
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    V .bash_profile mám:
    if [ -z "$(/usr/bin/pgrep -x demonloger)" ]; then
    `nohup /datalog_bin/autoapp/demonloger >/dev/null 2>&1&`
    fi
    
    Tady je moje funkční smyčka, třeba ti to k něčemu bude:
    #!/bin/bash
    
    #Tento spustitelny soubor se ma chovat jako daemon.
    #Spousti se prikazem:
    #nohup /datalog_bin/autoapp/demonloger >&/dev/null&
    #`nohup /datalog_bin/autoapp/demonloger >/dev/null 2>&1&`
    #Ukoncuje se prikazem:
    #kill $(pgrep demonloger) >/dev/null 2>&1
    
    #How kill sleep
    trap 'kill $(jobs -p); exit' 1 2 3 15
    
    while true; do
    
    sleep 300&
    wait ${!}
    
    log="/datalog_bin/log_datalogger/datalogger_log"
    logername="app"
    logerpid="$(/usr/bin/pgrep -x $logername)"
    maxload="30"
    seconds="10"
    hertz="$(getconf CLK_TCK)"
    
    #Jestlize program nejede, spust ho
    if [ -z "$logerpid" ]; then
       aktualnicas=`date +"%d.%m.%Y_%H:%M"`
       echo "$(echo $aktualnicas)_demonloger_restartoval_app, ktera umrela" >>"$log"
       /sbin/fuser -k /dev/tty1 >/dev/null 2>&1
    
    #Jestlize program jede a zatezuje procesor vice nez je zdravo (kousl se), pak
    elif [ -n "$logerpid" ]; then
       cputime1=$(cat /proc/$logerpid/stat | awk '{print "(" , $14, " + ", $15, ")"}' | bc)
       sleep "$seconds"
       cputime2=$(cat /proc/$logerpid/stat | awk '{print "(" , $14, " + ", $15, ")"}' | bc)
       cpuload=$(echo "100*(${cputime2} - ${cputime1})/$seconds/$hertz" | bc)
       resultload=$(echo "$cpuload > $maxload" | bc)
       if [ "$resultload" = "1" ]; then
         aktualnicas=`date +"%d.%m.%Y_%H:%M"`
         echo "$(echo $aktualnicas)_demonloger_restartoval_app, ktera se kousla,  cpuload $(echo $cpuload)" >>"$log"
         kill "$logerpid" || kill -9 "$logerpid"
         sleep 20&
         wait ${!}
         /sbin/fuser -k /dev/tty1 >/dev/null 2>&1
      fi
    fi
    done
    
    
    11.5.2024 02:07 jejda | skóre: 27 | blog: jejda
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Na openwrt není ani bash ani getconf ani bc ani fuser. Muselo by se to celé předělat. Ani nevím jestli bych to vůbec zvládnul. Nějaké brutální bashismy tam ale nevidím, počítat umí buď přímo shell anebo jestli jsou tam float čísla s čárkou zvládne to awk. No na ten můj problém s cronem mi to přijde trošku overkill řešení. Ale přesto dík za inspiraci.
    10.5.2024 23:02 Ja
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Asi bych to zkusil zjednodušit a místo kombinace kill a pgrep použil pkill.
    11.5.2024 00:44 jejda | skóre: 27 | blog: jejda
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    pkill na openwrt defaultně není. Jde sice doinstalovat, ale do toho se mi moc nechce, protože to vyžaduje 190KiB místa na disku. By mi potom zůstalo už jenom 50KiB místa.
    Řešení 1× (jejda (tazatel))
    Jendа avatar 11.5.2024 02:53 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    mv cron-pokus.sh cron-poxus.sh (a samozřejmě adekvátně změnit i v crontabu)

    Ten příkaz kill $(pgrep -f pokus) zabije dva procesy, zabije svého rodiče společně s pokus.sh, ještě předtím, než tento stihne spustit novou instanci.

    A problém nesouvisí s cronem, stačí si spustit 2 terminály a koukat co se děje. Ideálně spustit skripty se sh -x.
    # sh -x /root/cron-pokus.sh
    + pgrep -f pokus
    + kill 21824 21832
    Terminated
    
    11.5.2024 04:07 jejda | skóre: 27 | blog: jejda
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    No to bude ono!! špatný název skriptu. Mě zmátlo že ten příkaz funguje když se zadá do terminálu a nefunguje ve skriptu. Tak teď už to s tím přejmenovaným pomocným meziskriptem funguje jak má. Sice furt moc nechápu, proč teda ten příkaz nefunguje přímo v crontab. Tam přece žádný rodič stejného jména není. No hlavně že to funguje aspoň takto. Dík moc! :-)
    11.5.2024 15:01 čavo | skóre: 16
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Inak ak ide len o zmazanie logu, tak by malo stačiť naplánovať truncate na súbor:
    > /tmp/pokus.log
    
    11.5.2024 16:27 jejda | skóre: 27 | blog: jejda
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Ano. Jsem to dodatečně trochu upravil abych viděl taky jeden den starý log když by bylo potřeba
    #!/bin/sh
    
    kill $(pgrep -f pokus)
    if [ $? -eq 0 ]; then
        vcera=$(date -d @$(($(date +%s)-86400)) +%Y-%m-%d)
        mv /tmp/pokus.log /tmp/pokus_$vcera.log 2> /dev/null
        sh /root/pokus.sh > /tmp/pokus.log 2>&1 &
    fi
    
    funguje to super.
    10.5.2024 21:38 Ignotus | skóre: 10
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    skript generuje nezanedbatelné množství výstupu do souboru /tmp/pokus.log a nechcu aby mě ten log bobtnal do nekonečna
    Nestálo by za to zavolať logger a zapísať dáta do systémového logu? Netreba nič reštartovať a mám dojem, že rotácia syslogu funguje.
    10.5.2024 22:06 jejda | skóre: 27 | blog: jejda
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    On ten výstup toho skriptu není zas tak životně důležitý aby se tím musel zasírat systémový log. Taky by se musel doinstalovat a nějak rozumně nastavit logrotate. Doufal jsem, že to půjde nějak jednoduše cronem.
    10.5.2024 22:44 X
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Taky by jsi to mohl rovnou naroubovat na syslog, rsyslogd.. Mikochodem cron si neporadi s restartem boxu.
    10.5.2024 22:30 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Nerozumiem prečo tam je && a nie ;

    To má byť nejaký sofistikovaný trolling?
    10.5.2024 22:46 X
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Kdyz das ';' tak se to pusti, i kdyz se to nepovede zabit a pobezi to duplicitne?
    11.5.2024 01:35 jejda | skóre: 27 | blog: jejda
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Právěže se to nespustí. Ani takto:
    * * * * * kill $(pgrep -f pokus); sh /root/pokus.sh > /tmp/pokus.log 2>&1 &
    ani takto
    * * * * * kill $(pgrep -f pokus) && sh /root/pokus.sh > /tmp/pokus.log 2>&1 &
    ani takto:
    * * * * * /bin/kill $(/usr/bin/pgrep -f pokus); /bin/sh /root/pokus.sh &
    Jenom to ten skript zabije pokud běží a hotovo. Co je za středníkem už se nevímproč ignoruje.
    11.5.2024 11:11 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: cron a restart skriptu
    Reagoval som na sekvenciu príkazov. Teda že sa spusti druhý príkaz len ak sa podarí prvý. To sa dá obaliť do shell skriptu alebo do onelineru sh -c 'blabla -bla; bla'

    Založit nové vlákno • Nahoru

    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.