Bash اور Python میں SIGTERM بھیجنے اور پکڑنے کا طریقہ

Bash Awr Python My Sigterm B Yjn Awr Pk N Ka Tryq



لینکس میں، عمل سگنلز کا استعمال کرتے ہوئے ایک دوسرے کے ساتھ بات چیت کرتے ہیں۔ سگنلز سافٹ ویئر کی مداخلت کے طور پر کام کرتے ہیں جو مختلف واقعات یا درخواستوں کے پروگراموں کو مطلع کرتے ہیں۔ مثال کے طور پر، جب کوئی پروگرام چل رہا ہو، تو آپ پروگرام سے باہر نکلنے کے لیے ایک کِل سگنل بھیج سکتے ہیں۔ جو سگنل بھیجا جاتا ہے وہ مختلف کارروائیوں کو متحرک کر سکتا ہے جیسے کہ عمل کو روکنا، پروگرام کو ختم کرنا، دوبارہ عمل درآمد شروع کرنا وغیرہ۔

Bash اور Python کے ساتھ کام کرتے وقت، آپ SIGTERM سگنل بھیج سکتے ہیں تاکہ چلتے ہوئے عمل کو نرمی سے ختم کیا جا سکے۔ یہ پوسٹ Bash اور Python میں SIGTERM بھیجنے اور پکڑنے کے بارے میں بتاتی ہے۔

سائن ٹرم کیا ہے؟

یونکس سسٹم میں سگنلز کی تین اقسام ہیں: سسٹم، ڈیوائس، اور صارف کی طرف سے طے شدہ سگنلز۔ ہر سگنل کی ایک عددی قدر ہوتی ہے۔ آپ سگنل کو اس کا نام یا انٹیجر ویلیو بتا کر عمل میں لا سکتے ہیں۔







SIGTERM ایک سگنل ہے جس کی عددی قیمت 15 ہے۔ یہ اس وقت عمل میں آتا ہے جب آپ چلتے ہوئے عمل کو نرمی سے ختم کرنا چاہتے ہیں۔ بش میں SIGTERM استعمال کرنے کے لیے نحو درج ذیل ہے:



ٹارگٹ ٹرم کو ختم کریں۔ < پی آئی ڈی >

یا

مار ڈالو - پندرہ < پی آئی ڈی >

آپ درج ذیل کمانڈ کا استعمال کرتے ہوئے تمام دستیاب سگنلز کو چیک کر سکتے ہیں۔



مار ڈالنا





Bash اور Python میں SIGTERM بھیجنے اور پکڑنے کا طریقہ

آپ مختلف صورتوں میں Bash اور Python میں SIGTERM بھیجنا اور پکڑ سکتے ہیں۔ جب آپ اپنے Bash یا Python پروگرام پر عمل کرتے ہیں، تو آپ پروگرام کو ختم کرنے کے لیے SIGTERM سگنل پر عمل درآمد کر سکتے ہیں۔ ہمارے پاس یہ سمجھنے کے لیے مختلف مثالیں ہیں کہ آپ Bash اور Python میں SIGTERM کیسے بھیجتے اور پکڑتے ہیں۔

1. ازگر اسکرپٹ کا استعمال

Python 1.4 اور تازہ ترین ورژن استعمال کرتے وقت، آپ SIGTERM بھیجنے اور پکڑنے کے لیے سگنل لائبریری کا استعمال کر سکتے ہیں۔ لائبریری کو اپنے پروگرام میں درآمد کریں تاکہ یہ بیان کیا جا سکے کہ آپ کے پروگرام کو مختلف سگنلز کو کیسے پکڑنا اور ان پر ردعمل ظاہر کرنا چاہیے۔ سگنل لائبریری آپ کو موصول ہونے والے سگنل کے عدد کی اطلاع دینے کے لیے ایک سگنل ہینڈلر بنانے دیتی ہے۔ اس کے بعد آپ پکڑے گئے سگنل کو رجسٹر کر سکتے ہیں اور موجودہ عمل جیسے کہ اس کی PID کے بارے میں معلومات حاصل کر سکتے ہیں۔ آئیے ایک مثال دیتے ہیں۔



ہمارے پاس ایک Python اسکرپٹ ہے جو بھیجے گئے سگنل کے عدد کو پکڑتا ہے۔ مزید یہ کہ یہ موجودہ عمل کی PID کو پکڑتا ہے۔

مندرجہ ذیل تصویر میں، ہم Python اسکرپٹ پر عمل درآمد کرتے ہیں اور کچھ دیر کا لوپ رکھتے ہیں جو ہر چند سیکنڈ میں مکمل ہوتا ہے۔ ایک اور ٹرمینل پر، ہم PID کی وضاحت کر کے عمل کو ختم کرنے کے لیے SIGTERM سگنل بھیج سکتے ہیں جو ہمیں Python اسکرپٹ پر عمل کرنے سے حاصل ہوتا ہے:

ایک بار جب ہم SIGTERM سگنل بھیجتے ہیں، تو ہم دیکھتے ہیں کہ اسکرپٹ پر عمل درآمد رک جاتا ہے۔ اس کی وجہ یہ ہے کہ یہ سگنل انٹیجر کو حاصل کرتا ہے۔ اس صورت میں، ہم SIGTERM سگنل کے لیے kill -15 پر عمل کرتے ہیں۔ آپ انٹیجر ویلیو کے بجائے SIGTERM کلیدی لفظ کا استعمال کرتے ہوئے SIGTERM kill سگنل بھی بھیج سکتے ہیں۔ ہمیں اب بھی وہی نتیجہ ملتا ہے۔

آپ درج ذیل نحو کا استعمال کرتے ہوئے اپنے ازگر کے کام کو بھی انجام دے سکتے ہیں:

python3 < سکرپٹ / کام > اور

پہلے طریقہ کے برعکس، جب ہم اس آپشن کو استعمال کرتے ہوئے SIGTERM بھیجتے ہیں، تو ہم دیکھ سکتے ہیں کہ جب جاب کا عمل شروع ہوتا ہے تو جاب ID پرنٹ ہو جاتی ہے۔ اسے مارنے کے بعد، ہمیں 'ہو گیا' کا درجہ مل جاتا ہے۔ SIGTERM کو اس کا نام یا انٹیجر بتا کر بھیجا جا سکتا ہے۔

2. باش اسکرپٹ کا استعمال

باش اسکرپٹ پر عمل کرتے وقت آپ سگنل پکڑنے کے لیے 'ٹریپ' کمانڈ استعمال کر سکتے ہیں۔ اس مثال میں، ہم نے SIGTERM سگنل کو پکڑنے کے لیے 'trap' کمانڈ شامل کی ہے۔ اگر کوئی SIGTERM سگنل نہیں بھیجا جاتا ہے تو اسکرپٹ 'تاریخ' کمانڈ کو ہزار بار عمل میں لانے کے لیے 'فور' لوپ ہے۔

Bash اسکرپٹ پر عمل کرتے وقت، آپ کو دبا کر SIGTERM سگنل بھیج سکتے ہیں۔ Ctrl + Z کی بورڈ کی چابیاں 'ٹریپ' کمانڈ ٹرانسمیٹڈ سگنل کو پکڑ لیتی ہے، اور 'فور' لوپ عمل کرنا چھوڑ دے گا۔ آپ کو ایک آؤٹ پٹ ملے گا جو اس بات کی تصدیق کرے گا کہ چل رہی نوکری کو SIGTERM سگنل ملا ہے اور وہ رک گیا ہے۔

اس طرح آپ باش میں SIGTERM بھیجتے اور پکڑتے ہیں۔

نتیجہ

آپ کسی کام یا پروگرام کو انجام دیتے وقت مختلف اہداف حاصل کرنے کے لیے مختلف سگنل بھیج سکتے ہیں۔ SIGTERM کسی پروگرام کو نرمی سے روکنے کے لیے بھیجا جاتا ہے۔ Python کے لیے، آپ کو سگنل پکڑنے کے لیے ایک سگنل ہینڈلر کی ضرورت ہے، اور آپ 'kill' کمانڈ کا استعمال کرتے ہوئے SIGTERM بھیج سکتے ہیں۔ آپ SIGTERM سگنل کیپچر کرنے اور بھیجنے کے لیے Bash پر 'trap' کمانڈ اور کی بورڈ کیز استعمال کر سکتے ہیں۔ اس پوسٹ نے تفصیل سے اس کو حاصل کرنے کے طریقے کے بارے میں مختلف مثالیں پیش کیں۔