Apa yang dilakukan -HUP ketika digunakan dengan killall?

16

Terkadang ketika saya menjalankan killallperintah dari Terminal, rekan kerja menyarankan atau mengedit skrip saya untuk ditampilkan killall -HUP.

Apa yang dilakukan -HUPbagian itu?

Danijel-James W
sumber
Inilah halaman manual Apple untuk killall: developer.apple.com/library/mac/documentation/Darwin/Reference/... sepertinya h = help, u = user, dan p = proses. Tapi itu semua huruf kecil. Saya tidak melihat parameter huruf besar pada halaman manual, tetapi huruf besar dapat memiliki arti yang sangat berbeda - atau mungkin tidak ada ..
David DelMonte

Jawaban:

21

The -HUPpilihan adalah sinyal yang dikirim ke proses oleh killallperintah. Agak sulit dikatakan, tetapi entri yang relevan dalam killallmanual adalah:

-SIGNAL     Send a different signal instead of the default TERM.  The signal may be specified
            either as a name (with or without a leading SIG), or numerically.

Perbedaan antara TERMsinyal default yang killallmengirim dan HUPsinyal sangat tergantung pada program Anda mengirim sinyal. Pada akhir program, mereka menerima nilai sinyal interupsi yang berbeda. Jadi program dapat menangkap interupsi dan memutuskan, berdasarkan nilainya, apakah mereka harus melakukan satu atau lain hal.

The TERMsinyal (historis "menghentikan sinyal") biasanya dikirim ke sebuah program untuk meminta penghentian (yang merupakan versi politer dari memaksa penghentian dengan KILLsinyal). Program ini bebas untuk menangkap dan mengabaikan TERMsinyal. Itu tidak harus berakhir jika tidak mau dan dapat sepenuhnya mengabaikan sinyal ini.

The HUPsinyal (historis "sinyal hangup") biasanya dikirim ke sebuah program untuk permintaan yang restart dan re-membaca semua konfigurasi dalam proses. Perilaku aktual program tergantung pada implementasi spesifik program. Tidak semua program menangkap HUPdan mereka tidak diharuskan oleh konvensi atau dogma. Misalnya, server web Apache akan menangkap HUPsinyal dan membaca kembali semua file konfigurasinya tetapi tidak akan memulai kembali proses apa pun.

Jika Anda ingin benar-benar menghentikan proses dan tidak khawatir tentang apakah mereka akan menangkap dan mematuhi sinyal menggunakan KILLsinyal. Itu tidak bisa ditangkap atau diabaikan dan mengakibatkan penghentian proses.

Untuk ulasan yang baik tentang sinyal POSIX yang tersedia, lihat artikel Wikipedia ini .

Ian C.
sumber
2
Di bagian bawah halaman manual untuk killall, di bagian SEE JUGA, adalah tautan ke halaman manual kill yang berisi daftar beberapa sinyal dan apa yang mereka lakukan.
Ian C.
Saya adalah salah satu dari #FAILorang - orang yang tidak pernah membaca melewati sakelar. Terima kasih!
Danijel-James W
Sebagai "sinyal hangup", HUP biasanya dikirim ke program ketika pengguna logout atau mengakhiri shell yang memulai program. Jika menangkap sinyal tidak dilaksanakan oleh program, program biasanya akan berakhir. Seperti disebutkan di atas, program yang menerima sinyal dapat mengimplementasikan aktivitas yang diinginkan sebagai hasil dari menangkap sinyal, seperti yang ditunjukkan oleh contoh Apache.
nachbar
2

The -HUPadalah "menggantung" sinyal yang dapat memicu sebuah aplikasi untuk berhenti, membaca itu file konfigurasi, dan kemudian mulai lagi. Ini belum tentu lebih baik daripada menggunakannya tanpa.

killall Finder

dan

killall -HUP Finder

Sama hormatnya. Di OS X Finder akan diluncurkan kembali, tetapi akan membaca kembali file konfiguasinya. Ini mungkin tidak benar-benar terjadi jika aplikasi yang sedang berjalan tidak memiliki -HUPfungsi yang dibangun di dalamnya. Seperti poster sebelumnya disebutkan Apache. Bunyinya file konfigurasi, tetapi tidak bisa diluncurkan lagi.

Tech29
sumber