Cara Menghantar dan Menangkap SIGTERM dalam Bash dan Python

Cara Menghantar Dan Menangkap Sigterm Dalam Bash Dan Python



Di Linux, proses berkomunikasi antara satu sama lain menggunakan isyarat. Isyarat bertindak sebagai gangguan perisian yang memberitahu program tentang pelbagai acara atau permintaan. Sebagai contoh, apabila program sedang berjalan, anda boleh menghantar isyarat bunuh untuk keluar dari program. Isyarat yang dihantar mungkin mencetuskan tindakan yang berbeza seperti menghentikan pelaksanaan, menamatkan program, menyambung semula pelaksanaan, dsb.

Apabila bekerja dengan Bash dan Python, anda boleh menghantar isyarat SIGTERM untuk menamatkan proses berjalan dengan lembut. Siaran ini merangkumi tentang menghantar dan menangkap SIGTERM dalam Bash dan Python.

Apakah ISTILAH TANDA

Sistem Unix mempunyai tiga kategori isyarat: sistem, peranti dan isyarat yang ditentukan pengguna. Setiap isyarat mempunyai nilai integer. Anda boleh melaksanakan isyarat dengan menyatakan namanya atau nilai integernya.







SIGTERM ialah isyarat dengan nilai integer 15. Ia dilaksanakan apabila anda ingin menamatkan proses berjalan dengan lembut. Berikut ialah sintaks untuk menggunakan SIGTERM dalam Bash:



bunuh JANGKA SASARAN < PID >

atau

bunuh - lima belas < PID >

Anda boleh menyemak semua isyarat yang tersedia menggunakan arahan berikut:



bunuh -l





Cara Menghantar dan Menangkap SIGTERM dalam Bash dan Python

Anda mungkin mahu menghantar dan menangkap SIGTERM dalam Bash dan Python dalam keadaan yang berbeza. Apabila anda melaksanakan program Bash atau Python anda, anda boleh melaksanakan isyarat SIGTERM untuk mematikan program. Kami mempunyai contoh yang berbeza untuk memahami cara anda menghantar dan menangkap SIGTERM dalam Bash dan Python.

1. Menggunakan Skrip Python

Apabila menggunakan Python 1.4 dan versi terkini, anda boleh menggunakan perpustakaan isyarat untuk menghantar dan menangkap SIGTERM. Import perpustakaan dalam program anda untuk menentukan cara program anda harus menangkap dan bertindak balas terhadap isyarat yang berbeza. Pustaka isyarat membolehkan anda membuat pengendali isyarat untuk melaporkan integer isyarat yang diterima. Anda kemudiannya boleh mendaftarkan isyarat yang ditangkap dan mendapatkan maklumat tentang proses semasa seperti PIDnya. Mari beri contoh.



Kami mempunyai skrip Python yang menangkap integer isyarat yang dihantar. Selain itu, ia menangkap PID proses semasa.

Dalam imej berikut, kami melaksanakan skrip Python dan mempunyai gelung sementara yang dilaksanakan setiap beberapa saat. Pada terminal lain, kami boleh menghantar isyarat SIGTERM untuk mematikan proses dengan menyatakan PID yang kami dapat daripada melaksanakan skrip Python:

Sebaik sahaja kami menghantar isyarat SIGTERM, kami dapati bahawa skrip berhenti melaksanakan. Itu kerana ia menangkap integer isyarat. Dalam kes ini, kami melaksanakan bunuh -15 untuk isyarat SIGTERM. Anda juga boleh menghantar isyarat bunuh SIGTERM menggunakan kata kunci SIGTERM dan bukannya nilai integernya. Kami masih mendapat keputusan yang sama.

Anda juga boleh melaksanakan tugas Python anda menggunakan sintaks berikut:

python3 < skrip/pekerjaan > &

Tidak seperti kaedah pertama, apabila kami menghantar SIGTERM menggunakan pilihan ini, kami dapat melihat bahawa ID kerja dicetak apabila kerja mula dilaksanakan. Selepas kami membunuhnya, kami mendapat status 'selesai'. SIGTERM boleh dihantar dengan menyatakan namanya atau integernya.

2. Menggunakan Skrip Bash

Anda boleh menggunakan arahan 'perangkap' untuk menangkap isyarat semasa melaksanakan skrip Bash. Dalam contoh ini, kami menambah arahan 'perangkap' untuk menangkap isyarat SIGTERM. Skrip adalah gelung 'untuk' untuk melaksanakan perintah 'tarikh' seribu kali jika tiada isyarat SIGTERM dihantar.

Apabila melaksanakan skrip Bash, anda boleh menghantar isyarat SIGTERM dengan menekan butang Ctrl + Z kekunci papan kekunci. Perintah 'perangkap' menangkap isyarat yang dihantar, dan gelung 'untuk' akan berhenti melaksanakan. Anda akan mendapat output yang mengesahkan bahawa kerja yang sedang dijalankan telah menerima isyarat SIGTERM dan telah berhenti.

Begitulah cara anda menghantar dan menangkap SIGTERM dalam Bash.

Kesimpulan

Anda boleh menghantar isyarat yang berbeza untuk mencapai matlamat yang berbeza apabila melaksanakan kerja atau program. SIGTERM dihantar untuk menghentikan program dengan lembut. Untuk Python, anda memerlukan pengendali isyarat untuk menangkap isyarat, dan anda boleh menghantar SIGTERM menggunakan arahan 'bunuh'. Anda boleh menggunakan arahan 'perangkap' dan kekunci papan kekunci pada Bash untuk menangkap dan menghantar isyarat SIGTERM. Siaran ini memberikan contoh yang berbeza tentang cara mencapainya secara terperinci.