Cara Mengirim dan Menangkap SIGTERM di Bash dan Python

Cara Mengirim Dan Menangkap Sigterm Di Bash Dan Python



Di Linux, proses berkomunikasi satu sama lain menggunakan sinyal. Sinyal bertindak sebagai interupsi perangkat lunak yang memberi tahu program tentang berbagai peristiwa atau permintaan. Misalnya, saat sebuah program sedang berjalan, Anda dapat mengirimkan sinyal mati untuk keluar dari program. Sinyal yang dikirim dapat memicu tindakan yang berbeda seperti menghentikan eksekusi, menghentikan program, melanjutkan eksekusi, dll.

Saat bekerja dengan Bash dan Python, Anda dapat mengirim sinyal SIGTERM untuk menghentikan proses yang berjalan dengan lembut. Posting ini membahas tentang mengirim dan menangkap SIGTERM di Bash dan Python.

Apa itu JANGKA TANDA

Sistem Unix memiliki tiga kategori sinyal: sistem, perangkat, dan sinyal yang ditentukan pengguna. Setiap sinyal memiliki nilai integer. Anda dapat menjalankan sinyal dengan menentukan namanya atau nilai bilangan bulatnya.







SIGTERM adalah sinyal dengan nilai integer 15. Ini dijalankan ketika Anda ingin menghentikan proses yang sedang berjalan dengan lembut. Berikut ini adalah sintaks untuk menggunakan SIGTERM di Bash:



bunuh JANGKA TARGET < PID >

atau

membunuh - limabelas < PID >

Anda dapat memeriksa semua sinyal yang tersedia menggunakan perintah berikut:



bunuh -l





Cara Mengirim dan Menangkap SIGTERM di Bash dan Python

Anda mungkin ingin mengirim dan menangkap SIGTERM di Bash dan Python dalam berbagai contoh. Saat Anda menjalankan program Bash atau Python, Anda dapat mengeksekusi sinyal SIGTERM untuk mematikan program. Kami memiliki contoh berbeda untuk memahami bagaimana Anda mengirim dan menangkap SIGTERM di Bash dan Python.

1. Menggunakan Skrip Python

Saat menggunakan Python 1.4 dan versi terbaru, Anda dapat menggunakan pustaka sinyal untuk mengirim dan menangkap SIGTERM. Impor perpustakaan di program Anda untuk menentukan bagaimana program Anda harus menangkap dan bereaksi terhadap sinyal yang berbeda. Pustaka sinyal memungkinkan Anda membuat penangan sinyal untuk melaporkan bilangan bulat dari sinyal yang diterima. Anda kemudian dapat mendaftarkan sinyal yang ditangkap dan mendapatkan informasi tentang proses saat ini seperti PID-nya. Mari kita beri contoh.



Kami memiliki skrip Python yang menangkap bilangan bulat dari sinyal yang dikirim. Selain itu, menangkap PID dari proses saat ini.

Pada gambar berikut, kami menjalankan skrip Python dan memiliki pengulangan sementara yang dijalankan setiap beberapa detik. Di terminal lain, kami dapat mengirim sinyal SIGTERM untuk mematikan proses dengan menentukan PID yang kami dapatkan dari mengeksekusi skrip Python:

Setelah kami mengirimkan sinyal SIGTERM, kami melihat bahwa skrip berhenti dijalankan. Itu karena menangkap bilangan bulat sinyal. Dalam hal ini, kami mengeksekusi kill -15 untuk sinyal SIGTERM. Anda juga dapat mengirim sinyal pemutus SIGTERM menggunakan kata kunci SIGTERM alih-alih nilai bilangan bulatnya. Kami masih mendapatkan hasil yang sama.

Anda juga dapat menjalankan pekerjaan Python Anda menggunakan sintaks berikut:

python3 < naskah/pekerjaan > &

Berbeda dengan metode pertama, saat kami mengirimkan SIGTERM menggunakan opsi ini, kami dapat melihat bahwa ID pekerjaan dicetak saat pekerjaan mulai dijalankan. Setelah kami membunuhnya, kami mendapatkan status 'selesai'. SIGTERM dapat dikirim dengan menentukan nama atau bilangan bulatnya.

2. Menggunakan Skrip Bash

Anda dapat menggunakan perintah 'trap' untuk menangkap sinyal saat menjalankan skrip Bash. Dalam contoh ini, kami menambahkan perintah 'trap' untuk menangkap sinyal SIGTERM. Skrip adalah loop 'untuk' untuk menjalankan perintah 'tanggal' seribu kali jika tidak ada sinyal SIGTERM yang dikirim.

Saat menjalankan skrip Bash, Anda dapat mengirim sinyal SIGTERM dengan menekan tombol Ctrl + Z tombol keyboard. Perintah 'trap' menangkap sinyal yang dikirimkan, dan loop 'for' akan berhenti mengeksekusi. Anda akan mendapatkan output yang mengonfirmasi bahwa pekerjaan yang sedang berjalan telah menerima sinyal SIGTERM dan telah berhenti.

Begitulah cara Anda mengirim dan menangkap SIGTERM di Bash.

Kesimpulan

Anda dapat mengirimkan sinyal yang berbeda untuk mencapai tujuan yang berbeda saat menjalankan pekerjaan atau program. SIGTERM dikirim untuk menghentikan program dengan lembut. Untuk Python, Anda memerlukan penangan sinyal untuk menangkap sinyal, dan Anda dapat mengirim SIGTERM menggunakan perintah 'kill'. Anda dapat menggunakan perintah 'trap' dan tombol keyboard di Bash untuk menangkap dan mengirim sinyal SIGTERM. Posting ini menyajikan berbagai contoh tentang cara mencapainya secara mendetail.