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 13:00 | Komunita

Do 30. října se lze přihlásit do dalšího kola programu Outreachy (Wikipedie), jehož cílem je přitáhnout do světa svobodného a otevřeného softwaru lidi ze skupin, jež jsou ve světě svobodného a otevřeného softwaru málo zastoupeny. Za 3 měsíce práce, od 4. prosince 2018 do 4. března 2019, v participujících organizacích lze vydělat 5 500 USD.

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

Společnost Purism představila kryptografický token Librem Key. Koupit jej lze za 59 dolarů. Token byl vyvinut ve spolupráci se společností Nitrokey a poskytuje jak OpenPGP čipovou kartu, tak zabezpečení bootování notebooků Librem a také dalších notebooků s open source firmwarem Heads.

Ladislav Hagara | Komentářů: 7
včera 20:33 | Nová verze

Společnost NVIDIA oficiálně vydala verzi 10.0 toolkitu CUDA (Wikipedie) umožňujícího vývoj aplikací běžících na jejich grafických kartách. Přehled novinek v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
včera 20:00 | Upozornění

Příspěvek Jak přežít plánovanou údržbu DNS na blogu zaměstnanců CZ.NIC upozorňuje na historicky poprvé podepsání DNS root zóny novým klíčem dne 11. října 2018 v 18:00. Software, který nebude po tomto okamžiku obsahovat nový DNSSEC root klíč, nebude schopen resolvovat žádná data. Druhým důležitým datem je 1. února 2019, kdy významní výrobci DNS softwaru, také historicky poprvé, přestanou podporovat servery, které porušují DNS standard

… více »
Ladislav Hagara | Komentářů: 5
včera 15:55 | Pozvánky

Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 156. brněnský sraz, který proběhne v pátek 21. září od 18:00 v restauraci Na Purkyňce na adrese Purkyňova 80.

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

Alan Griffiths z Canonicalu oznámil vydání verze 1.0.0 display serveru Mir (GitHub, Wikipedie). Mir byl představen v březnu 2013 jako náhrada X serveru a alternativa k Waylandu. Dnes Mir běží nad Waylandem a cílen je na internet věcí (IoT).

Ladislav Hagara | Komentářů: 0
20.9. 22:00 | Nasazení Linuxu
Stabilní aktualizace Chrome OS 69 (resp. Chromium OS), konkrétně 69.0.3497.95, přináší mj. podporu linuxových aplikací. Implementována je pomocí virtualizace, a proto je tato funkce také omezena na zařízení s dostatkem paměti a podporou hardwarové akcelerace, tudíž nejsou podporovány chromebooky s 32bitovými architekturami ARM, či Intel Bay Trail (tzn. bez Intel VT-x).
Fluttershy, yay! | Komentářů: 5
20.9. 21:32 | Zajímavý projekt

Došlo k uvolnění linuxové distribuce CLIP OS, vyvíjené francouzským úřadem pro kybernetickou bezpečnost ANSSI, jako open source. Vznikla za účelem nasazení v úřadech, kde je potřeba omezit přístup k důvěrným datům. Je založená na Gentoo.

Fluttershy, yay! | Komentářů: 1
20.9. 16:00 | Komerce

Zjistěte více o bezpečné a flexibilní architektuře v cloudu! IBM Cloud poskytuje bezpečné úložiště pro Vaše obchodní data s možností škálovatelnosti a flexibilitou ukládání dat. Zároveň nabízí prostředky pro jejich analýzu, vizualizaci, reporting a podporu rozhodování.

… více »
Fluttershy, yay! | Komentářů: 12
20.9. 12:22 | Nová verze

V dubnu letošního roku Mozilla představila webový prohlížeč pro rozšířenou a virtuální realitu Firefox Reality (GitHub). V úterý oznámila vydání verze 1.0. Ukázka na YouTube. Firefox Reality je k dispozici pro Viveport, Oculus a Daydream.

Ladislav Hagara | Komentářů: 2
Na optické médium (CD, DVD, BD aj.) jsem naposledy vypaloval(a) data před méně než
 (13%)
 (14%)
 (21%)
 (23%)
 (25%)
 (4%)
 (1%)
Celkem 390 hlasů
 Komentářů: 33, poslední 16.9. 11:55
Rozcestník

Dotaz: Jak je možné zjistit velikost výstupní roury?

Aleš Janda avatar 14.6.2017 10:53 Aleš Janda | skóre: 21 | blog: kýblův blog | Kralupy nad Vltavou
Jak je možné zjistit velikost výstupní roury?
Přečteno: 382×
Mám tento příkaz:

pv /dev/zero > /dev/sdaX

Program "pv" vezme obsah souboru /dev/zero, kopíruje ho na výstup a do toho ukazuje průběh. Pokud je vstup nějak omezen (např. je to normální soubor), ukáže kolik toho má v procentech, zbývající čas atd. Pokud neví (např. vstupem je roura), ukazuje jen kolik přenesl dat. Zařízení /dev/sdaX je pak normální fyzický disk, který má nějakou velikost.

Ve výše zmíněném případě má k dispozici pv jen zařízení /dev/zero, které je nekonečné, a zapisuje na svůj standardní výstup, který by měl být (pro něj) také nekonečný.

Tak to ale není! Ve skutečnost pv (správně) zobrazil průběh tak, že počítá s celkovou velikostí /dev/sdaX! Jak je to možné? To přesměrování do zařízení přece zařídil bash, ne? Jak se pv dozví velikost něčeho, co je schované za rourou?

Díky :-)

Řešení dotazu:


Odpovědi

Josef Kufner avatar 14.6.2017 11:02 Josef Kufner | skóre: 68
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?
Jednoduše. Nijak se to nedozví.

Dokonce i kdyby zapisoval do souboru a ne do roury, tak nebude vědět, neboť soubory při zápisu nemají explicitně omezenou velikost. Může si bokem zjistit, jak je na tom filesystém, kam se ukládá, ale ani to není jisté, navíc se situace může snadno změnit během zápisu. Ani pokud se zapisuje přímo na blokové zařízení, tak není jisté, že se jeho velikost nezmění – např. pokud by to byl LVM oddíl a někdo do něj přidal disk; ten program může jen hádat, zda na druhé straně souboru je fyzické zařízení.

Nejlepší a asi i jediné, co můžeš udělat, je explicitně říct pv, jak je cíl/zdroj velký:
pv -s `blockdev --getsize64 /dev/sdaX` /dev/zero > /dev/sdaX
Hello world ! Segmentation fault (core dumped)
Aleš Janda avatar 14.6.2017 11:14 Aleš Janda | skóre: 21 | blog: kýblův blog | Kralupy nad Vltavou
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?
Právě že se to nějak dozví:
# pv /dev/zero > /dev/sdc
 644MiB 0:00:12 [4,37MiB/s] [>                      ]  1% ETA 0:18:25
(všimněte si toho odhadu času, procent apod.)

Když dám mezi pv a zařízení ještě třeba gzip, tak už tam žádný odhad není.
Josef Kufner avatar 14.6.2017 11:18 Josef Kufner | skóre: 68
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?
Hm, koukám, že jsem si to pěkně blbě přečetl.
Hello world ! Segmentation fault (core dumped)
14.6.2017 11:05 Aleš Kapica | skóre: 47 | blog: kenyho_stesky | Ostrava
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?
No, vzhledem k tomu že zařízení /dev/sdaX existuje a z pohledu linuxu má předem známou velikost, je vcelku logické že ti projede přes PV jen tolik dat, kolik se ně vejde.

Nekonečně můžeš jet podle mě leda když necháš pv jet z /dev/zero do /dev/null
14.6.2017 11:08 NN
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?
Mas to v manualu:
Zeroing a disk:

pv < /dev/zero > /dev/sda

Note that if the input size cannot be calculated, and the output is a block device, then the size of the block device will be used and pv will automatically stop at that size as if -S had been given.
Aleš Janda avatar 14.6.2017 11:22 Aleš Janda | skóre: 21 | blog: kýblův blog | Kralupy nad Vltavou
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?
No jo, to je přesně ten případ, o kterém píšu. Jak je to ale možné? Jak může pv zjistit „size of the block device“ když je to pro něj jen výstupní roura? (Skutečně je to jen roura, když se podívám htopem na spuštěný příkaz, je tam přesně ten příkaz, co jsem zadal, tedy „pv /dev/zero“.)

V tom manuálu je to ještě okořeněné o to, že zjevně umí zjistit i velikost vstupu. A opravdu – když zadám
pv < soubor | další příkazy…
pv se nějak domákne velikost toho vstupního souboru. Když zadám
cat soubor | pv | další příkazy…
už tu velikost nezjistí. V čem je ten rozdíl? Lze nějak zjistit typ roury, co za ní „sedí“?
Josef Kufner avatar 14.6.2017 11:36 Josef Kufner | skóre: 68
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?
Trik je v tom, že > není roura, ale přesměrování. Když uděláš pv > soubor, tak shell otevře soubor a tím na něj získá file descriptor. Když pak shell spustí pv, tak mu tenhle file descriptor předá (spolu s stdin/err, co vedou na terminál), takže ve výsledku je situace stejná, jako by si pv ten soubor otevřelo samo. Pak už stačí zavolat nějaké to ioctl a zjistit, co je potřeba.

Pokud se použije |, tak shell vyrobí nepojmenovanou rouru, čímž získá dva file descriptory – jeden na začátek a druhý na konec. Stejným způsobem pak jednotlivé file descriptory předá odpovídajícím programům. Takže když pak pv chce použít ioctl jako předtím, tak je za file descriptorem roura a ne blokové zařízení.
Hello world ! Segmentation fault (core dumped)
Aleš Janda avatar 14.6.2017 11:43 Aleš Janda | skóre: 21 | blog: kýblův blog | Kralupy nad Vltavou
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?
Jo aha, ioctl se vlastně volá přímo na file descriptor! Čili i z „roury“ lze poznat, jestli to je roura nebo soubor. Že mě to hned nenapadlo. To je ono, díky :-)
27.6.2017 06:56 mimi.vx | skóre: 38 | blog: Mimi.VX | Praha
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?

stale si pletes dva pojmy ... roura (|) a presmerovani (> , >> , < , <<) .. U roury to fakt neni jak zjistit

USE="-gnome -kde";turris
26.6.2017 21:10
Rozbalit Rozbalit vše Re: Jak je možné zjistit velikost výstupní roury?
skrytý komentář Náš administrátor shledal tento komentář závadným.

trolling

Zobrazit komentář

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.