Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Opgelost] Statistiek output van dd pipen  (gelezen 1374 keer)

[Opgelost] Statistiek output van dd pipen
« Gepost op: 2010/01/19, 22:06:55 »
Kan iemand mij uitleggen hoe het komt dat ik hier de volledige output krijg en niet alleen de laatste lijn?
$ sudo dd if=/dev/sda iflag=direct of=/dev/null bs=512 count=1000 skip=249 | tail -n 1
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 0.0674772 s, 7.6 MB/s

Ik krijg het ding zelfs niet weggeschreven naar een file...
sudo dd if=/dev/sda iflag=direct of=/dev/null bs=512 count=1000 skip=249 > test
1000+0 records in
1000+0 records out
512000 bytes (512 kB) copied, 0.0797417 s, 6.4 MB/s
$ cat test
$

Op andere commando's werkt die pipe dan weer wel zoals verwacht...
$ cat /boot/grub/menu.lst | tail -n 1
### END DEBIAN AUTOMAGIC KERNELS LIST
$
« Laatst bewerkt op: 2010/01/20, 14:47:02 door ShadowDragon »
Xubuntu 11.04 - Xfce 4.8 - SSD Vertex 2 (Extended) 60 GB

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: Statistiek output van dd pipen
« Reactie #1 Gepost op: 2010/01/19, 23:02:21 »
Als ik het goed heb doet > alles wat naar stdout wordt geschreven, naar het bestand test
Maar ik denk dat de output van dd niet naar stdout wordt geschreven.

Lukt het als je 2>&1 erachter zet?

Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Re: Statistiek output van dd pipen
« Reactie #2 Gepost op: 2010/01/20, 10:01:19 »
Volgens mij werkt het wel, maar schrijft hij het bestand "test" naar de home-map van root omdat ge "sudo" met het commando gebruikt.

Dus geef eens het volledig pad voor test:
sudo dd if=/dev/sda iflag=direct of=/dev/null bs=512 count=1000 skip=249 > /home/ShadowDragon/test
cat test

Re: Statistiek output van dd pipen
« Reactie #3 Gepost op: 2010/01/20, 12:45:58 »
Volgens mij werkt het wel, maar schrijft hij het bestand "test" naar de home-map van root omdat ge "sudo" met het commando gebruikt.

Dus geef eens het volledig pad voor test:
sudo dd if=/dev/sda iflag=direct of=/dev/null bs=512 count=1000 skip=249 > /home/ShadowDragon/test
cat test
Euhm nee, want > wordt in bash gedaan, niet in sudo. Je bash draait onder je eigen account, dus.
anders was het:
sudo -i /bin/bash -c 'dd if=/dev/sda iflag=direct of=/dev/null bs=512 count=1000 skip=249 > test'
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline vanadium

  • Lid
Re: Statistiek output van dd pipen
« Reactie #4 Gepost op: 2010/01/20, 13:21:36 »
sudo dd if=/dev/sda iflag=direct of=/dev/null bs=512 count=1000 skip=249 2> testdd schrijft zijn output naar stderr, en niet naar stdout. Je capteert die output met 2>

Om de uitvoer van stderr naar stdout om te leiden zodat je "tail" commando werkt, gebruik je 2>&1

Re: Statistiek output van dd pipen
« Reactie #5 Gepost op: 2010/01/20, 14:46:45 »
stderr <-- Tuurlijk, anders zou je geen onderscheid meer hebben tussen wat dd lees en wegschrijft naar stdout en wat dd rapporteert.

Hij doet nu wat ik verwachtte:
$ sudo dd if=/dev/sda iflag=direct of=/dev/null bs=512 count=1000 skip=249 2>&1 | tail -n 1
512000 bytes (512 kB) copied, 0.0759113 s, 6.7 MB/s
$

Mercikes voor het meedenken!  ^-^
Xubuntu 11.04 - Xfce 4.8 - SSD Vertex 2 (Extended) 60 GB