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 01:11 | Nová verze

Realtimová strategie Warzone 2100 (Wikipedie) byla vydána ve verzi 4.2.0. Podrobný přehled novinek, změn a oprav v ChangeLogu na GitHubu. Nejnovější verzi Warzone 2100 lze instalovat také ze Snapcraftu. Brzy i z Flathubu.

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

X Server (xorg-server) 21.1.0 byl oficiálně vydán. Mezi stěžejními novinkami je jmenována podpora např. proměnlivé obnovovací frekvence v modesetting, 2D akcelerace GLAMOR v Xvfb, gest touchpadu v XInput 2.4 nebo dokončení přechodu z Autotools na Meson. XWayland byl již dříve vydán samostatně.

Fluttershy, yay! | Komentářů: 1
26.10. 23:33 | IT novinky

Vývojáři komunikátoru Element, dříve Riot, představili Element One. Za 5 dolarů měsíčně propojí Matrix, WhatsApp, Signal a Telegram.

Ladislav Hagara | Komentářů: 21
26.10. 22:11 | Nová verze

Na konferenci Next.js Conf bylo oznámeno vydání nové verze 12 open source frameworku Next.js (Wikipedie) pro psaní webových aplikací v Reactu. Přehled novinek v příspěvku na blogu.

Ladislav Hagara | Komentářů: 3
26.10. 14:22 | Zajímavý software

Vývojáři open source emulátoru přenosné herní konzole Nintendo Switch Yuzu (Wikipedie) na svém blogu informují, že v nejnovějších sestaveních Yuzu je již k dispozici nejžádanější funkce Resolution Scaler aneb hry navržené pro rozlišení 720p/900p/1080p lze hrát v rozlišení 2K/4K/8K.

Ladislav Hagara | Komentářů: 1
26.10. 13:33 | Komunita

Nadace Raspberry Pi informuje, že ovladač V3DV pro Raspberry Pi 4 úspěšně prošel testy kompatibility s Vulkan 1.1 u Khronosu.

Ladislav Hagara | Komentářů: 0
26.10. 07:00 | Zajímavý projekt

PiBox je NAS postavený na Raspberry Pi Compute Module 4. Na Kickstarteru byla spuštěna kampaň na jeho podporu.

Ladislav Hagara | Komentářů: 21
25.10. 12:44 | Nová verze

Byla vydána třetí opravná verze 19.3 v únoru vydané verze 19.0 multimediálního centra Kodi (dříve XBMC, Wikipedie) s kódovým označením Matrix.

Ladislav Hagara | Komentářů: 6
24.10. 01:22 | Komunita

Společnost Trump Media & Technology Group (TMTG) založena bývalým prezidentem USA Donaldem Trumpem spouští sociální síť Truth Social. Ta je založena na open source sociální síti Mastodon, jejíž zdrojové kódy jsou k dispozici pod licencí AGPLv3 (GNU Affero General Public License). Zdrojové kódy Truth Social ale k dispozici nejsou a tím pádem je licence AGPLv3 porušována. Dle organizace Software Freedom Conservancy má TMTG 30 dnů na nápravu, tj. zveřejnění zdrojových kódů Truth Social. Pokud se tak nestane, přijde o práva ke zdrojovým kódům sítě Mastodon.

Ladislav Hagara | Komentářů: 73
24.10. 00:11 | Nová verze

Fabio Loli vydal verzi 21.10 časové osy linuxových distribucí Linux Distributions Timeline. Ke stažení je png i svg. Jedná se o fork již neaktualizovaného GLDT (GNU/Linux Distribution Timeline).

Ladislav Hagara | Komentářů: 0
Kolik monitorů (obrazovek) používáte současně?
 (48%)
 (37%)
 (13%)
 (1%)
Celkem 468 hlasů
 Komentářů: 29, poslední 19.10. 07:04
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: 371×
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: 53 | 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: 53 | 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: 53 | 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: 53 | 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: 53 | 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.