Vraag pv proces interupting wachtwoord


Dus ik probeer een SD-kaart met een afbeelding van 7 GB te flitsen en die duurt een eeuwigheid (zoals 15 uur plus), dus ik besloot om pv dus ik kon de voortgang zien. Het probleem dat ik tegenkom is dat zodra ik de opdracht invoer, het voortgangsrapport verschijnt, waardoor ik de wachtwoordprompt in de weg zit zodat ik niet verder kan met de overdracht. Hoe los ik dit op?

Dit is de code die ik heb gebruikt.

Eerst probeerde ik dit:

sudo dd if=diskimage.img | pv -s 7340M | sudo dd of=/dev/disk2 bs=64k

Zodra ik op enter raak verschijnt de voortgang, dus de wachtwoordprompt is gevuld met die tekst. Ik vroeg me af of het te maken heeft met het gebruik van sudo dd voor de uitvoerzijde, omdat ik dat niet hoef te doen wanneer ik het niet gebruik pv, maar alle voorbeelden die ik heb gezien doen het.

Toen probeerde ik de grootte modifier weg te laten, maar het gebeurde nog steeds. Uiteindelijk gaf ik het op en ging gewoon terug naar het gebruik dd zonder pven gewoon de voortgang controleren met ctrl-t, maar ik zou het heel graag willen hebben pv werken.

Alle hulp wordt op prijs gesteld.

Aan een kanttekening, wanneer ik gebruik ctrl-t dit zijn de resultaten die ik krijg. (de belasting is van het gebruik ctrl-t)

sudo dd if=diskimage.img of=/dev/disk2 bs=64k

load: 1.09  cmd: dd 906 uninterruptible 0.00u 0.17s
176+0 records in
175+0 records out
11468800 bytes transferred in 37.236996 secs (307995 bytes/sec)

load: 0.60  cmd: dd 906 uninterruptible 0.01u 3.92s
4573+0 records in
4572+0 records out
299630592 bytes transferred in 2322.619605 secs (129005 bytes/sec)

1
2018-06-16 19:18


oorsprong


Waarschijnlijk heb je het niet nodig sudo voor het eerst dd die alleen het bronbestand aan het lezen is. Dat zou met normale gebruikersprivileges moeten werken, tenzij je rare toestemmingen hebt ingesteld. - Byte Commander


antwoorden:


De oplossing daarvoor is vrij simpel, word root voordat je het commando uitvoert, want sudo wordt sowieso niet door buizen gedragen. Dus jouw oplossing is dit:

# become root
sudo su
# do your stuff
dd if=diskimage.img | pv -s 7340M | dd of=/dev/disk2 bs=64k
# get back to your normal user account
exit

0
2018-06-16 19:30



Graag gedaan, in de meeste gevallen denken we niet de voor de hand liggende makkelijke manier :) - Videonauth
Ik denk dat gebruiken sudo bash ... zoals getoond in heemayl's antwoord zou de voorkeur moeten hebben boven root shells (sudo su of vergelijkbaar) in het algemeen. - Byte Commander


Omdat de commando's rond pijpen op hetzelfde moment starten, jouw twee sudo dd en pv ze beginnen allemaal tegelijkertijd.

Twee sudo dd vragen om wachtwoord en pv begint zijn trigger ook te trekken, allemaal tegelijk, vandaar dat de prompt in een afval verandert.

Om dit op te lossen, kunt u gebruiken bash opdrachtgroepering en gebruik sudo op bash enkel en alleen:

sudo bash -c '{ dd if=diskimage.img | pv -s 7340M | dd of=/dev/disk2 bs=64K ;}'

Of gebruik een subshell:

sudo bash -c '( dd if=diskimage.img | pv -s 7340M | dd of=/dev/disk2 bs=64K )'

In beide gevallen wordt u gevraagd sudo wachtwoord eenmaal en ook geen andere vorm van gebruikersoverschakeling is vereist.


1
2018-06-16 19:44