Co dokładnie oznacza polecenie pkill -USR1 -n -x dd?

12

Używam dddo przesyłania sieciowego obrazu dysku na kartę SD w moim BeagleBone.

Użycie pkill -USR1 -n -x ddpołączenia ssh z tym BeagleBone daje mi aktualizację statusu procesu przesyłania, co jest świetne. Jestem po prostu ciekawy, jak to naprawdę działa, więc mogę z niego efektywnie korzystać w przyszłości.

Po przeczytaniu man pkillnadal nie wyjaśniłem całkowicie, jak pkill -USR1 -n -x dddziała nadanie mi tej bardzo przydatnej aktualizacji statusu.

użytkownik391339
źródło

Odpowiedzi:

15

Jest to zachowanie specyficzne dla dd. Ze strony podręcznika dd:

Wysłanie sygnału USR1 do działającego procesu „dd” powoduje, że drukuje statystyki we / wy do standardowego błędu, a następnie wznawia kopiowanie.

$ 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

-USR1mówi, pkillaby wysłać USR1sygnał. -ni -xsą tylko filtrami, aby upewnić się, że wysyłasz do właściwego procesu ( -nwysyła do najnowszego procesu i -xoznacza, że ​​proces musi być dokładnie nazwany dd)

Michał Mrożek
źródło
2
To jest tylko w wersji GNU „dd” (AFAIK). SIGUSR1 na „dd” dla innych systemów operacyjnych (np. AIX, HP-UX i Solaris) domyślnie zakończy proces.
DarkHeart,
@DarkHeart używa SIGINFO (lub INFO) na OSX (prawdopodobnie tak samo na bsd)
akhan,