Apa sebenarnya arti dari perintah pkill -USR1 -n -x dd?

12

Saya menggunakan dduntuk melakukan transfer jaringan dari disk image ke kartu sd di BeagleBone saya.

Menggunakan pkill -USR1 -n -x ddkoneksi ssh ke BeagleBone ini memberi saya pembaruan status dari proses transfer, yang sangat bagus. Saya hanya ingin tahu bagaimana ini bekerja sehingga saya dapat menggunakannya secara efektif di masa depan.

Setelah membacanya man pkillmasih belum sepenuhnya menjelaskan bagaimana cara pkill -USR1 -n -x ddbekerja untuk memberi saya pembaruan status yang sangat berguna ini.

pengguna391339
sumber

Jawaban:

15

Ini adalah perilaku khusus untuk dd. Dari ddhalaman manual:

Mengirim sinyal USR1 ke proses 'dd' yang sedang berjalan membuatnya mencetak statistik I / O ke kesalahan standar dan kemudian melanjutkan penyalinan.

$ 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

-USR1memberitahu pkilluntuk mengirim USR1sinyal. -ndan -xhanya filter untuk memastikan Anda mengirim ke proses yang tepat ( -nmengirim ke proses terbaru dan -xberarti proses tersebut harus diberi nama dengan tepat dd)

Michael Mrozek
sumber
2
Ini hanya dalam versi GNU 'dd' (AFAIK). SIGUSR1 menjadi 'dd' untuk OS lain (mis. AIX, HP-UX & Solaris) akan menghentikan proses, secara default.
DarkHeart
@DarkHeart menggunakan SIGINFO (atau INFO) pada osx (mungkin sama pada bsd)
akhan