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í
×
16.11. 17:00 | Nová verze

Simon Long představil na blogu Raspberry Pi novou verzi 2018-11-13 linuxové distribuce Raspbian určené především pro jednodeskové miniaturní počítače Raspberry Pi. Přehled novinek v poznámkách k vydání. Společně s Raspbianem byl aktualizován také instalační nástroj NOOBS (New Out Of the Box Software). Simon Long z novinek zdůrazňuje multimediální přehrávač VLC s hardwarovou akcelerací nebo vývojové prostředí pro Python Thonny ve verzi 3. Ke stažení jsou nově také lite a full obrazy Raspbianu. Raspbian Full opět obsahuje software Mathematica.

Ladislav Hagara | Komentářů: 0
16.11. 02:00 | Nová verze

Krátce po vydání Debianu 9.6 oznámil Tomáš Matějíček vydání verze 9.6 dnes již na Debianu založené živé linuxové distribuce Slax. Vedle vylepšení z Debianu je opraveno několik malých chyb. Opraveno bylo bootování pomocí PXE. Novinkou je skript s názvem pxe pro spuštění vlastního PXE serveru.

Ladislav Hagara | Komentářů: 0
16.11. 01:00 | Nová verze

Byla vydána beta verze Red Hat Enterprise Linuxu 8. Přehled novinek v příspěvku na blogu a v poznámkách k vydání.

Ladislav Hagara | Komentářů: 3
15.11. 13:44 | IT novinky

Nadace Raspberry Pi na svém blogu představila (YouTube) jednodeskový počítač Raspberry Pi 3 Model A+. Toto menší Raspberry Pi 3 lze koupit za 25 dolarů.

Ladislav Hagara | Komentářů: 0
15.11. 06:00 | Pozvánky

Dnes a zítra probíhá v Praze konference Internet a Technologie 18 pořádaná sdružením CZ.NIC. Sledovat ji lze online.

Ladislav Hagara | Komentářů: 0
15.11. 01:11 | Komunita

V září proběhl v Madridu Open Source CubeSat Workshop 2018. Videozáznamy přednášek byly zveřejněny na YouTube.

Ladislav Hagara | Komentářů: 1
15.11. 00:55 | Zajímavý software

Společnost Amazon představila Amazon Corretto. Jedná se o fork a distribuci OpenJDK (Open Java Development Kit) s dlouhodobou podporou od Amazonu. Ke stažení je preview verze 8. V plánu je také verze 11. Zdrojové kódy jsou k dispozici na GitHubu. Jedná se o reakci na oznámení společnosti Oracle, že bezplatné aktualizace její Javy nebude možné po lednu 2019 používat komerčně. Název Coretto vychází z Caffè corretto, tj. espressa s alkoholem.

Ladislav Hagara | Komentářů: 13
14.11. 12:44 | Nová verze

Po roce vývoje od vydání verze 5.2.0 byla vydána verze 5.3.0 svobodného integrovaného vývojového prostředí KDevelop (Wikipedie). Novinkou je analyzátor Clazy. Vylepšena byla podpora programovacích jazyků C++, PHP a Python. Ke stažení a k vyzkoušení je i binární balíček s KDevelopem 5.3.0 ve formátu AppImage.

Ladislav Hagara | Komentářů: 0
14.11. 05:55 | Komunita

Ubuntu 19.04 bude mít kódové jméno Disco Dingo. Dle oznámení v diskusním listu ubuntu-devel-announce je ve vývojové verzi Disco Dinga výchozím Pythonem 3 verze 3.7. Perl byl aktualizován na verzi 5.28. OpenSSL 1.0 bude nahrazeno OpenSSL 1.1.1 LTS. Nové instalace Dinga budou mít sloučený /usr. Stane se tak 7 let po sloučení /usr ve Fedoře nebo Arch Linuxu.

Ladislav Hagara | Komentářů: 9
14.11. 02:22 | IT novinky

V pondělí a úterý proběhl v San Franciscu Chrome Dev Summit 2018. Přehled dění v příspěvcích na Chromium Blogu. Videozáznamy přednášek na YouTube. Představen byl například web pro webové vývojáře web.dev nebo rozšíření webového prohlížeče Chrome s názvem VisBug (YouTube) určené pro webdesignery. Slíbená je podpora Firefoxu.

Ladislav Hagara | Komentářů: 0
Jak nejčastěji otevíráte dokumenty na počítači?
 (91%)
 (4%)
 (5%)
Celkem 112 hlasů
 Komentářů: 9, poslední 15.11. 22:46
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: 359×
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.