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 00:44 | Pozvánky

V sobotu 21. října 2017 se na půdě Elektrotechnické fakulty ČVUT v Praze uskuteční RT-Summit – setkání vývojářů linuxového jádra a uživatelů jeho real-time verze označované jako preempt-rt.

… více »
Pavel Píša | Komentářů: 1
včera 23:44 | Bezpečnostní upozornění

V Linuxu byla nalezena bezpečnostní chyba CVE-2017-15265 zneužitelná k lokální eskalaci práv. Jedná se o chybu v části ALSA (Advanced Linux Sound Architecture).

Ladislav Hagara | Komentářů: 1
včera 22:44 | Komunita

Greg Kroah-Hartman informuje na svém blogu, že do zdrojových kódu linuxového jádra bylo přidáno (commit) prohlášení Linux Kernel Enforcement Statement. Zdrojové kódy Linuxu jsou k dispozici pod licencí GPL-2.0. Prohlášení přidává ustanovení z GPL-3.0. Cílem je chránit Linux před patentovými trolly, viz například problém s bývalým vedoucím týmu Netfilter Patrickem McHardym. Více v často kladených otázkách (FAQ).

Ladislav Hagara | Komentářů: 4
včera 22:04 | Pozvánky

Rádi bychom vás pozvali na přednášku o frameworku Avocado. Jedná se o testovací framework další generace, inspirovaný Autotestem a moderními vývojovými nástroji, jako je třeba git. Přednáška se bude konat 23. října od 17 hodin na FEL ČVUT (Karlovo náměstí, budova E, auditorium K9 – KN:E 301). Více informací na Facebooku.

… více »
mjedlick | Komentářů: 0
včera 21:44 | Bezpečnostní upozornění

Nový útok na WPA2 se nazývá KRACK a postihuje prakticky všechna Wi-Fi zařízení / operační systémy. Využívá manipulace s úvodním handshake. Chyba by měla být softwarově opravitelná, je nutné nainstalovat záplaty operačních systémů a aktualizovat firmware zařízení (až budou). Mezitím je doporučeno používat HTTPS a VPN jako další stupeň ochrany.

Václav HFechs Švirga | Komentářů: 2
15.10. 00:11 | Zajímavý projekt

Server Hackaday představuje projekt RainMan 2.0, aneb jak naučit Raspberry Pi 3 s kamerovým modulem pomocí Pythonu a knihovny pro rozpoznávání obrazu OpenCV hrát karetní hru Blackjack. Ukázka rozpoznávání karet na YouTube. Zdrojové kódy jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 0
14.10. 15:11 | IT novinky

Online obchod s počítačovými hrami a elektronickými knihami Humble Bundle byl koupen společností IGN. Dle oficiálních prohlášení by měl Humble Bundle dále fungovat stejně jako dosud.

Ladislav Hagara | Komentářů: 8
14.10. 06:00 | Zajímavý článek

Brendan Gregg již v roce 2008 upozornil (YouTube), že na pevné disky se nemá křičet, že jim to nedělá dobře. Plotny disku se mohou rozkmitat a tím se mohou prodloužit časy odezvy pevného disku. V září letošního roku proběhla v Buenos Aires konference věnovaná počítačové bezpečnosti ekoparty. Alfredo Ortega zde demonstroval (YouTube, pdf), že díky tomu lze pevný disk použít také jako nekvalitní mikrofon. Stačí přesně měřit časy odezvy

… více »
Ladislav Hagara | Komentářů: 8
13.10. 14:33 | Komunita

Společnost SUSE natočila a na YouTube zveřejnila dva nové videoklipy: 25 Years - SUSE Music Video (7 Years parody) a Linus Said - Music Parody (Momma Said).

Ladislav Hagara | Komentářů: 6
13.10. 12:55 | Zajímavý projekt

Autoři stránky Open Source Game Clones se snaží na jednom místě shromažďovat informace o open source klonech proprietárních počítačových her. Přidat další hry nebo návrhy na zlepšení lze na GitHubu. Na stránce Open Source Text Games jsou shromažďovány informace o open source textových hrách. Opět lze k vylepšení nebo doplnění stránky použít GitHub.

Ladislav Hagara | Komentářů: 1
Těžíte nějakou kryptoměnu?
 (6%)
 (2%)
 (15%)
 (76%)
Celkem 717 hlasů
 Komentářů: 24, poslední 27.9. 08:30
    Rozcestník

    Dotaz: Bash: Jak zastavím for((;;)) cyklus?

    David Watzke avatar 21.12.2005 20:19 David Watzke | skóre: 74 | blog: Blog... | Praha
    Bash: Jak zastavím for((;;)) cyklus?
    Přečteno: 356×
    Ahoj. Napsal jsem si initskript pro Gentoo. Musí mimo jiné obsahovat: jak službu nastartovat, ukončit a restartovat. Takže:
    start() {
     for((;;))
      do
       echo "$(date +%F) @ $(date +%T) :: $(cpuload | awk {'print$2'})%" >> /home/david/stats/now
      done
    }
    
    stop() {
     mv /home/david/stats/now /home/david/stats/$(date +%F)-at-$(date +%T).log
    }
    
    restart() {
     mv /home/david/stats/now /home/david/stats/$(date +%F)-at-$(date +%T).log
     for((;;))
      do
       echo "$(date +%F) @ $(date +%T) :: $(cpuload | awk {'print$2'})%" >> /home/david/stats/now
      done
    }
    No a díky tomu jsem se dostal k tomu, že neumím ukončit for cyklus. Na začátku stop() a restart() mi to chybí. Nevíte prosím jak na to?
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

    Odpovědi

    21.12.2005 20:37 roman
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    to zalezi co xces dat do cyklu.
    David Watzke avatar 21.12.2005 20:39 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Co 'xci' dát do cyklu píšu v dotazu.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    Luboš Doležel (Doli) avatar 21.12.2005 20:46 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Pokud správně chápu o co se snažíš, tak musíš dát ten cyklus odděleně (asi) do skriptu a ve startu ten skript spouštět jako démon. Ve stopu mu poslat SIGTERM.
    David Watzke avatar 21.12.2005 20:55 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    To bude asi to, co potřebuju... díky.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    21.12.2005 20:48 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Ahoj,

    asi mi něco uteklo, ale co je konečným cílem tvé snahy?

    Jeslti si chceš dělat nějakej graf toho co se jak dlouho spouští, tak se vyprdni na samodělky a podívej se na bootchart.

    Ukončení for cyklu: co zkusit příkaz break v tom for cyklu?
    -- Nezdar není hanbou, hanbou je strach z pokusu.
    David Watzke avatar 21.12.2005 20:54 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Ne, jen to takhle logovat, nic víc.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    Heron avatar 21.12.2005 20:50 Heron | skóre: 51 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?

    Především by bylo vhodně, dělat restart voláním procedur stop a start, nikoliv copy-paste jejich obsah.

    Potom, když je to systémový skript, tak je lepší výsledek ukládat do /var/neco, než do /home

    Co takhle nekonečný for nahradit smyčkou while a jako podmínku tam dát test existence nejakého souboru? Pokud soubor přestane existovat (tj. ve stop se smaže), tak se jednoduše ukončí. To by nešlo?

    David Watzke avatar 21.12.2005 20:55 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    To by šlo, jenže jsem nikdy while smyčku nepsal...
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    Heron avatar 21.12.2005 20:58 Heron | skóre: 51 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Aspoň se to naučíš. Ještě ten skript může umět vracet svůj status podle existence či neexistence toho run-souboru.
    David Watzke avatar 21.12.2005 21:07 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Problém je v tom, že neumím otestovat existenci souboru.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    21.12.2005 21:18 David Jaša | skóre: 44 | blog: Dejvův blog
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    man test
    a ještě: [ je hardlink na test ;-)
    David Watzke avatar 21.12.2005 21:27 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Dík.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    Heron avatar 21.12.2005 20:56 Heron | skóre: 51 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?

    Tak mě napadá, že tam nikde není sleep. Nebo je už v tom cpuload?

    David Watzke avatar 21.12.2005 20:58 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Přesně tam je. :-) Jede to každých 5 sekund.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    David Watzke avatar 22.12.2005 06:21 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Takže pro úplnost. Celý zázrak je v tom, že cpuload každých 5 sekund zapíše zatížení procesoru do statistiky. Zdrojový kód cpuload je zde (díky, Doli), /etc/init.d/cpustats vypadá takto:
    start() {
            cpuloadd &
    }
    
    stop() {
     if [ -f /home/david/stats/now ]
      then
       mv /home/david/stats/now /home/david/stats/$(date +%F)-at-$(date +%T).log
       killall cpuloadd cpuload
      else
       killall cpuloadd cpuload
     fi
    }
    
    restart() {
     svc_stop
     svc_start
    }
    a cpuloadd obsahuje:
    #! /bin/bash
    
    doIt() {
     for((;;))
      do
       echo "$(date +%F) @ $(date +%T) :: $(cpuload | awk {'print$2'})%" >> /home/david/stats/now
      done
    }
    
    if [ -f /home/david/stats/now ]
     then
      mv /home/david/stats/now /home/david/stats/$(date +%F)-at-$(date +%T).log
      doIt
     else
      doIt
    fi
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    Heron avatar 23.12.2005 09:45 Heron | skóre: 51 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    if [cond]
       ...
       doIt
    else
       doIt
    fi
    

    Stejný příkaz v obou větvích ifu?

    David Watzke avatar 23.12.2005 09:49 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    To v cpuloadd je tam jen aby když při startu existuje now ho přesunul a zapisoval do novýho. No a v tom initskriptu je to zase o zabití...
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    Heron avatar 23.12.2005 09:59 Heron | skóre: 51 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?

    To si asi nerozumíme. Mě je jedno, co ten příkaz doIt dělá a v jakém je skriptu. Zajímá mě, proč je v obou větvích ifu stejný příkaz (tedy vykoná se, ať podmínka ifu dopadne jakkoliv)

    Místo:

    if [cond]
       ...
       doIt
    else
       doIt
    fi
    

    Lze přece jednoduše psát:

    if [cond]
       ...
    fi
    
    doIt
    
    David Watzke avatar 23.12.2005 10:00 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Jo aha, to mi... nedošlo. :-(
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    David Watzke avatar 23.12.2005 18:12 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Rád bych se ještě zeptal na jednu věc. Chtěl bych, aby po startu toho initskriptu zkontroloval zda existuje složka /var/stats a když ne, aby jí vytvořil. V manuálu testu kontrole zda soubor NEexistuje nic není (když neexistuje aby vrátil exit 0 a když jo, tak 1). Musím tedy napsat if s nějakým zbytečným echem, nebo to test umí a postačí while?
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    David Watzke avatar 23.12.2005 19:14 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Napadlo mě ještě:
    ls /var/stats &> /dev/null
    while [ $? != 0 ]
     do
      mkdir -p /var/stats
     done
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    David Watzke avatar 23.12.2005 19:15 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Heh, spíš ten test, co... :-D
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    23.12.2005 20:02 8an | skóre: 30
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Negace se dělá "!", třeba
    if [ ! -f "$FILE" ]; then
      echo "$FILE not found"
    fi
    If you build an operating system that even an idiot can use, only idiots will use it.
    David Watzke avatar 23.12.2005 20:43 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash: Jak zastavím for((;;)) cyklus?
    Jo aha, to se může taky. :-) Děkuji.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

    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.