كيفية إرسال والتقاط SIGTERM في باش وبايثون

Kyfyt Arsal Waltqat Sigterm Fy Bash Wbaythwn



في Linux ، تتواصل العمليات مع بعضها البعض باستخدام الإشارات. تعمل الإشارات كمقاطعات برمجية تُخطر البرامج بالأحداث أو الطلبات المختلفة. على سبيل المثال ، عند تشغيل أحد البرامج ، يمكنك إرسال إشارة قتل للخروج من البرنامج. قد تؤدي الإشارة المرسلة إلى تشغيل إجراءات مختلفة مثل إيقاف التنفيذ ، وإنهاء البرنامج ، واستئناف التنفيذ ، وما إلى ذلك.

عند العمل مع Bash و Python ، يمكنك إرسال إشارة SIGTERM لإنهاء العملية الجارية بهدوء. يغطي هذا المنشور حول إرسال والتقاط SIGTERM في Bash و Python.

ما هو مصطلح التوقيع

تحتوي أنظمة Unix على ثلاث فئات من الإشارات: النظام والجهاز والإشارات المحددة من قبل المستخدم. كل إشارة لها قيمة عددية. يمكنك تنفيذ الإشارة بتحديد اسمها أو قيمتها الصحيحة.







SIGTERM هي إشارة ذات قيمة عددية 15. يتم تنفيذها عندما تريد إنهاء عملية جارية بهدوء. فيما يلي بناء الجملة لاستخدام SIGTERM في Bash:



قتل TARGET TERM < PID >

أو

قتل - خمسة عشر < PID >

يمكنك التحقق من جميع الإشارات المتاحة باستخدام الأمر التالي:



قتل -l





كيفية إرسال والتقاط SIGTERM في باش وبايثون

قد ترغب في إرسال والتقاط SIGTERM في Bash و Python في حالات مختلفة. عند تنفيذ برنامج Bash أو Python ، يمكنك تنفيذ إشارة SIGTERM لإيقاف البرنامج. لدينا أمثلة مختلفة لفهم كيفية إرسال والتقاط SIGTERM في Bash و Python.

1. استخدام برنامج بايثون

عند استخدام Python 1.4 والإصدارات الأحدث ، يمكنك استخدام مكتبة الإشارات لإرسال SIGTERM والتقاطها. قم باستيراد المكتبة في برنامجك لتحديد كيفية التقاط البرنامج للإشارات المختلفة والتفاعل معها. تتيح لك مكتبة الإشارات إنشاء معالج إشارة للإبلاغ عن العدد الصحيح للإشارة المستقبلة. يمكنك بعد ذلك تسجيل الإشارة الملتقطة والحصول على معلومات حول العملية الحالية مثل PID الخاص بها. دعونا نعطي مثالا.



لدينا نص Python الذي يمسك العدد الصحيح للإشارة المرسلة. علاوة على ذلك ، فإنه يمسك PID للعملية الحالية.

في الصورة التالية ، نقوم بتنفيذ نص Python ولدينا حلقة while التي يتم تنفيذها كل بضع ثوانٍ. في محطة أخرى ، يمكننا إرسال إشارة SIGTERM لقتل العملية عن طريق تحديد PID الذي نحصل عليه من تنفيذ برنامج Python النصي:

بمجرد إرسال إشارة SIGTERM ، نلاحظ أن البرنامج النصي يتوقف عن التنفيذ. هذا لأنه يلتقط عدد صحيح للإشارة. في هذه الحالة ، نقوم بتنفيذ القتل -15 لإشارة SIGTERM. يمكنك أيضًا إرسال إشارة القتل SIGTERM باستخدام الكلمة الأساسية SIGTERM بدلاً من قيمتها الصحيحة. ما زلنا نحصل على نفس النتيجة.

يمكنك أيضًا تنفيذ مهمة Python باستخدام الصيغة التالية:

بيثون 3 < السيناريو / الوظيفة > &

على عكس الطريقة الأولى ، عندما نرسل SIGTERM باستخدام هذا الخيار ، يمكننا أن نرى أن معرف الوظيفة قد تمت طباعته عند بدء تنفيذ المهمة. بعد أن نقتلها ، نحصل على حالة 'الانتهاء'. يمكن إرسال SIGTERM بتحديد اسمها أو عددها الصحيح.

2. استخدام سكربت باش

يمكنك استخدام الأمر 'trap' لالتقاط إشارة عند تنفيذ برنامج نصي Bash. في هذا المثال ، أضفنا الأمر 'trap' للقبض على إشارة SIGTERM. النص عبارة عن حلقة 'for' لتنفيذ أمر 'date' ألف مرة إذا لم يتم إرسال إشارة SIGTERM.

عند تنفيذ برنامج Bash النصي ، يمكنك إرسال إشارة SIGTERM بالضغط على ملف السيطرة + Z مفاتيح لوحة المفاتيح. يلتقط الأمر 'trap' الإشارة المرسلة ، وستنتهي حلقة 'for' من التنفيذ. ستحصل على مخرجات تؤكد أن الوظيفة قيد التشغيل قد تلقت إشارة SIGTERM وتوقفت.

هذه هي الطريقة التي ترسل بها SIGTERM وتلتقطها في Bash.

خاتمة

يمكنك إرسال إشارات مختلفة لتحقيق أهداف مختلفة عند تنفيذ وظيفة أو برنامج. يتم إرسال SIGTERM لإيقاف البرنامج بهدوء. بالنسبة إلى Python ، تحتاج إلى معالج إشارة لالتقاط إشارة ، ويمكنك إرسال SIGTERM باستخدام أمر 'kill'. يمكنك استخدام الأمر 'trap' ومفاتيح لوحة المفاتيح على Bash لالتقاط إشارة SIGTERM وإرسالها. قدم هذا المنشور أمثلة مختلفة حول كيفية تحقيق ذلك بالتفصيل.