Saya terkejut dengan komentar ini dalam pertanyaan lain:
Mengirimkan dd sinyal USR1 terlalu cepat setelah dimulai (yaitu dalam skrip bash, baris setelah Anda memulainya) sebenarnya akan menghentikannya
Adakah yang bisa menjelaskan mengapa ?
Saya terkejut dengan komentar ini dalam pertanyaan lain:
Mengirimkan dd sinyal USR1 terlalu cepat setelah dimulai (yaitu dalam skrip bash, baris setelah Anda memulainya) sebenarnya akan menghentikannya
Adakah yang bisa menjelaskan mengapa ?
Jawaban:
Setiap sinyal memiliki "disposisi default" - proses apa yang dilakukan secara default ketika menerima sinyal itu. Ada tabel di signal(7)
halaman manual yang mencantumkannya:
Signal Value Action Comment
──────────────────────────────────────────────────────────────────────
...
SIGUSR1 30,10,16 Term User-defined signal 1
SIGUSR2 31,12,17 Term User-defined signal 2
SIGUSR1
dan SIGUSR2
keduanya memiliki tindakan default Term
- proses dihentikan. dd
mendaftarkan handler untuk mencegat sinyal dan melakukan sesuatu yang berguna dengannya, tetapi jika Anda memberi sinyal terlalu cepat, ia belum punya waktu untuk mendaftarkan handler itu, jadi tindakan default yang terjadi malah
strace
output dalam skrip shell ...)
{ dd if=/dev/zero of=/dev/null & }; kill -USR1 $!; jobs; sleep 1; jobs
untuk mereproduksi efek yang Anda gambarkan.