آموزشچگونه

آموزش خط فرمان: قسمت سی ام، سیگنال‌ها در لینوکس

Print Friendly, PDF & Email

فرمان kill به منظور پایان دادن پروسه‌ها استفاده می‌شود. این فرمان ما را قادر می‌سازد تا اجرای یک برنامه را که رفتار بدی دارد و باعث اختلال در سیستم شده است را متوقف کنیم:

ابتدا برنامه xlogo را در پس‌زمینه اجرا می‌کنیم. شل PID پروسه را چاپ می‌کند. سپس از فرمان kill برای از بین بردن پروسه استفاده می‌کنیم.

به این منظور پس از فرمان kill شماره PID را وارد کنید:

kill 28401

فرمان kill دقیقاً پروسه را از بین نمی‌برد. بلکه به جای آن سیگنال‌هایی برای آن ارسال می‌کند. سیگنال‌ها یکی از انواع روش‌های مختلفی هستند که سیستم‌عامل با برنامه‌ها ارتباط برقرار می‌کند. ما قبلا با استفاده از Ctrl+C و Ctrl+Z این ارتباط را مشاهده کرده‌ایم. وقتی که ترمینال این کلیدها را دریافت می‌کند سیگنالی برای برنامه ارسال می‌کند. در مورد Ctrl+C یک سیگنال با نام INT (interrupt) ارسال می‌کند و زمانی که Ctrl+Z را فشار می‌دهیم یک سیگنال با نام TSTP (Terminal Stop) را ارسال می‌نماید. برنامه‌ها در عوض به سیگنال‌ها گوش می‌کنند.

این واقعیت که یک برنامه می‌تواند گوش فرا دهد و در برابر سیگنال‌ها عمل کند آن‌ها را قادر می‌سازد که کارهایی مثل ذخیره کار در حین رخداد را در حالتی انجام دهد که سیگنال تخریب را دریافت می‌کند.

ارسال سیگنال به فرآیندها با فرمان kill

رایج‌ترین ترکیب برای فرمان kill به این شکل است:

kill [-signal] PID…

اگر هیچ سیگنالی به خط فرمان اختصاص نیابد، سیگنال TERM (Terminate) به صورت پیش‌فرض ارسال می‌شود. فرمان kill اغلب به منظور ارسال سیگنال‌هایی که در جدول زیر وجود دارد، استفاده می‌شود:

حال، این فرمان را امتحان می‌کنیم:

در این مثال برنامه xlogo را در پس‌زمینه اجرا کرده و سپس برای آن یک سیگنال HUP را به همراه kill ارسال می‌کنیم. در نتیجه برنامه xlogo ایان یافته و Shell حاکی از آن است که پروسه پس‌زمینه یک سیگنال Hangup دریافت کرده است. ممکن است برای مشاهده پیام، لازم باشد چندین بار Enter را فشار دهید. توجه داشته باشید که سیگنال ممکن است از طریق شماره و یا نام (شامل اسامی که حروف پیشوند SIG دارند) مشخص شود.

مثال بالا را امتحان کنید و دیگر سیگنال‌ها را آزمایش کنید. به خاطر داشته باشید که شما می‌توانید از jobspecها نیز به جای PIDها استفاده کنید.

پردازش‌ها نیز شبیه فایل‌ها دارای مالک هستند و شما بایستی مالک یک پروسه (و یا کاربر ارشد باشید) تا بتوانید پروسه را با استفاده از kill از بین ببرید.

علاوه بر سیگنال‌هایی که در جدول قبلی یافت می‌شوند که اغلب هم به همراه kill به کار برده می‌شوند، جدول زیر سیگنال‌های رایج دیگر را لیست کرده است:

برای دریافت لیستی کامل‌تر از سیگنال‌ها از فرمان زیر استفاده کنید:

ارسال سیگنال‌ها به چندین فرآیند با فرمان killall

همچنین ممکن است که سیگنال‌هایی را به چندین فرآیند که یک برنامه یا نام کاربری مشترک دارند را ارسال کنید. با استفاده از ترکیب زیر چگونگی استفاده از فرمان killall قابل پیاده‌سازی است:

killall [-u user] [-signal] name

برای شرح بیشتر، چندین نمونه از برنامه xlogo را آغاز کرده و سپس با killall همگی را نابود می‌کنیم:

به یاد داشته باشید که دست مثل فرمان kill برای استفاده از killall نیاز به مجوزهای کاربر ارشد (Super User) دارید.

دیگر فرمان‌های مرتبط با پروسه‌ها

از آنجایی که مانیتور پروسه‌ها یک وظیفه پراهمیت مدیریت سیستم است، فرمان‌های زیادی برای این کار در نظر گرفته شده‌اند. جدول زیر لیستی از این فرمان‌ها را نشان می‌دهد:

منبع: کتاب The Linux Command Line نوشته William E. Shotts

Related Articles

9 thoughts on “آموزش خط فرمان: قسمت سی ام، سیگنال‌ها در لینوکس”

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Close