Gzip progress bar (pv)

pv parancsot dd-hez szoktam használni folyamat jelzőnek:

dd if=/dev/sdx bs=1M | pv > hdd.img

Viszont nem tudtam, hogy gyakorlatilag cat parancsként funkcionál önmagában. Tehát az alábbi tömörítésnél:

gzip file

így is lehet:

pv file | gzip > file.gz

Így rendesen ki tudja írni a hátra lévő időt is. Ezen kívül semmit nem lassít a folyamaton.

A man doksinak az első példája egyébként hasonló, csak én nem olvastam..

Hozzászólások

ez milyen csomaggal települ?
-------------------------------------------------------------------------------
Az életben csak egy dolog a szép, de az épp nem jut eszembe.

Slackware Linux 12.1 | 2.6.26.7-janos

debian alatt:

# apt-cache show pv
Package: pv
Priority: optional
Section: utils
Installed-Size: 136
Maintainer: Kevin Coyner <kcoyner@debian.org>
Architecture: i386
Version: 1.1.4-1
Depends: libc6 (>= 2.7-1)
Suggests: doc-base
Filename: pool/main/p/pv/pv_1.1.4-1_i386.deb
Size: 28182
MD5sum: f755b8c791db7db4eb24456710cb91b1
SHA1: 08a4a0590374bf70df073cf43a20f26dc7f9fd11
SHA256: 4bf256b3718666ec078f4976cc5bf54171bd71ddaec7a0dcd675c4b77448a37c
Description: Shell pipeline element to meter data passing through
 pv (Pipe Viewer) can be inserted into any normal pipeline between two
 processes to give a visual indication of how quickly data is passing through,
 how long it has taken, how near to completion it is, and an estimate of how
 long it will be until completion.
 .
 To use it, insert it in a pipeline between two processes, with the
 appropriate options. Its standard input will be passed through to its
 standard output and progress will be shown on standard error.
Homepage: http://www.ivarch.com/programs/pv.shtml
Tag: implemented-in::c, interface::commandline, role::program, scope::utility, use::monitor

udv Zoli

dejóóó.
Ráadásul ez mindkét processzoromat leterheli:
$ cat /dev/zero | pv >> /dev/null
Ez csak egyet…:
$ cat /dev/zero >> /dev/null

int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

Így másodjára a htopon néztem, mindkét processzort kb. 100%-ra húzta föl az első (a második csak az egyiket). Gondolom nem kezeli túl okosan a kernelem a két processzort, de én így szeretem ☺

Egyébként a vicc az, hogy ezt a parancsot gyakorlatban is használom, amikor hálózatról megy a laptop és fázik a kezem ☺ (valami GPU stresszteszt kéne még mellé…)

int getRandomNumber() { // ←ez itt már az aláírásom
	return 4;//szabályos kockadobással választva.
}		//garantáltan véletlenszerű. xkcd

köszi az ötletet, nem ismertem, eddig én is az USR1 signalt küldtem a dd-nek...
viszont nekem nem a hátralévő időt mutatja, hanem az elteltet, a bitkolbász, pedig csak parasztvakítás, amolyan knight rider fénysor, semmi értelme sincs (tudom, kikapcsolható)

de így is hasznos kis tool!

--
by Mikul@s

valóban, dd-nél alapból nem fogja tudni mutatni a hátralévő időt, mivel nem tudja előre az adatmennyiséget - viszont megadhatod neki -s kapcsolóba, ezért így használom:

SIZE=`fdisk -s /dev/sdx`; dd if=/dev/sdx bs=1M | pv -s "$SIZE"k > hdd.img

ezzel szemben a gzip-es példánál mutatja rendesen és kalkulálja is az adatátvitel alapján, hogy mennyi idő van hátra.

Egy pendrive-ot akartam végigírni nullákkal, rögtön ez történt a parancs beírása után:


$ SIZE=`fdisk -s /dev/sde`; dd if=/dev/zero bs=1M | pv -s "$SIZE"k > /dev/sde
pv: write failed: No space left on device====================================================================================================>                                                                             ] 60% ETA 0:00:00

Igen, mivel a /dev/zero egységből jövő outputnak nincs vége. Illetve az én példámnál az sdX az input, nem pedig output. Tehát ott az sdX tartalmát írtam ki egy img fájlba.

Talán így működne:

$ SIZE=`fdisk -s /dev/sde`; dd if=/dev/zero bs=1k count="$SIZE" | pv -s "$SIZE"k > /dev/sde