Perilaku program ketika kill -HUP diterima?

32

Apakah ada cara untuk mengetahui apa yang akan dilakukan program ketika menerima sinyal kill HUP?
Tanpa hanya menjalankan perintah ofc: D

Misalnya,
killall -HUP pppdakan memulai kembali pppd
killall -HUP firefoxhanya akan mematikan firefox

bbaja42
sumber

Jawaban:

47

Baca dokumentasinya. Itu satu-satunya cara. Seperti yang sudah dituliskan Keith , arti asli SIGHUP adalah bahwa pengguna telah kehilangan akses ke program, dan karenanya program interaktif harus mati. Daemon - program yang tidak berinteraksi langsung dengan pengguna - tidak memerlukan perilaku ini dan sebaliknya sering memuat ulang file konfigurasi mereka ketika mereka menerima SIGHUP. Tapi ini hanya konvensi.

Jika Anda memiliki sumbernya, Anda dapat membacanya juga. Atau jika Anda hanya memiliki biner, Anda dapat mencoba membongkarnya, mencari sigactionpanggilan yang mengatur penangan sinyal SIGHUP, dan mencoba mencari tahu apa yang dilakukan penangan sinyal itu. Akan lebih mudah mengatur untuk tidak mengirim SIGHUP ke program itu sejak awal.

Pada suatu titik waktu, proses yang diberikan ada di salah satu dari tiga keadaan sehubungan dengan sinyal tertentu: mengabaikannya, melakukan tindakan standar atau menjalankan penangan kustom. Banyak kesatuan memungkinkan Anda untuk melihat topeng sinyal dari suatu proses dengan ps, misalnya dengan ps sdi Linux. Itu bisa memberi tahu Anda jika prosesnya mengabaikan sinyal atau akan langsung mati di SIGHUP, tetapi jika prosesnya telah menetapkan pawang Anda tidak bisa memberi tahu apa yang pawang lakukan.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
SIGHUP kembali ke zaman modem dial-up. Ini menandakan Hang-UP dari koneksi modem. Ini masih berlaku untuk koneksi yang
terputus
@ bill Benar, tetapi sesi SSH juga akan SIGHUP proses anak-nya jika kehilangan koneksi kliennya.
Keith
@Keith: Itu sebabnya saya menunjukkan bahwa itu berlaku untuk koneksi yang terputus, dan jarang disebabkan oleh hang-up lagi. Akan membingungkan pada titik ini untuk mengubah namanya menjadi sesuatu yang berhubungan dengan terputus, seperti SIGDCN.
BillThor
18

Tindakan default adalah untuk menghentikan proses pada SIGHUP. Lihat man 7 signaluntuk lebih jelasnya. Tetapi program dapat memerangkapnya dan melakukan apa pun yang mereka inginkan. Karena proses daemon tidak seharusnya keluar, mereka biasanya menggunakan SIGHUP untuk tujuan lain, seperti menginisialisasi ulang diri mereka sendiri (seperti yang dilakukan pppd). Firefox menyimpan tindakan default.

Keith
sumber