Was bedeutet der Befehl pkill -USR1 -n -x dd genau?

11

Ich verwende ddeine Netzwerkübertragung eines Disk-Images auf eine SD-Karte auf meinem BeagleBone.

Die Verwendung pkill -USR1 -n -x ddeiner SSH-Verbindung zu diesem BeagleBone gibt mir eine Statusaktualisierung des Übertragungsprozesses, was großartig ist. Ich bin nur neugierig, wie es tatsächlich funktioniert, damit ich es in Zukunft effektiv nutzen kann.

Nach dem Lesen wurde man pkillimmer noch nicht vollständig erklärt, wie pkill -USR1 -n -x ddes funktioniert, mir dieses sehr nützliche Status-Update zu geben.

user391339
quelle

Antworten:

14

Dies ist ein spezifisches Verhalten dd. Von der ddManpage:

Durch das Senden eines USR1-Signals an einen laufenden 'dd'-Prozess werden E / A-Statistiken mit Standardfehlern gedruckt und anschließend das Kopieren fortgesetzt.

$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid

18335302+0 records in 18335302+0 records out 9387674624 bytes (9.4 GB) copied,  34.6279  seconds, 271 MB/s

-USR1sagt pkill, das USR1Signal zu senden . -nund -xsind nur Filter, um sicherzustellen, dass Sie an den richtigen Prozess senden ( -nsendet an den neuesten Prozess und -xbedeutet, dass der Prozess genau benannt werden muss dd)

Michael Mrozek
quelle
2
Dies ist nur in der GNU-Version von 'dd' (AFAIK). Ein SIGUSR1 bis 'dd' für andere Betriebssysteme (z. B. AIX, HP-UX und Solaris) beendet den Prozess standardmäßig.
DarkHeart
@ DarkHeart verwenden SIGINFO (oder INFO) auf OSX (wahrscheinlich das gleiche auf BSD)
Akhan