یکی از مزیت های مهم لینوکس، توانایی خاتمه دادن یک فرآیند بدون نیاز به راه اندازی مجدد سرور است. در این مطلب آموزش کشتن یک پروسه (Process) در لینوکس را آموزش خواهیم داد.
قبل از شروع کار باید بدانیم که شماره یا ID این فرایند چیست و چطور باید آن را پیدا کنیم.
Process Identifier یک شناسه عددی برای یک فرایند است. هر پروسس دارای یک ID منحصر به فرد است.
برای مثال اولین فرایندی که در یک سیستم مبتنی بر لینوکس اجرا می شود، فرایند init است و شماره ID آن روی ۱ تنظیم می شود.
این فرایند به عنوان والد دیگر فرایندها شناسایی می شود و لینوکس اجازه کشتن این فرایند را به شما نخواهد داد.
حال برای پیدا کردن PID هر فرایند در حال اجرا در سرور ما می توانیم دستور زیر را اجرا کنیم:
ps -A
این دستور یک لیست از پروسس های درحال اجرا می دهد. همچنین برای دیدن لیست پروسس ها می توانید از دستور Top نیز استفاده کنید.
اگر می خواهیم PID یک فرآیند مشخص را پیدا کنیم، می توانیم از دستور pidof و نام فرایند استفاده کنیم. برای مثال: برای پیدا کردن PID فرایند mysql می توانیم دستور زیر را اجرا کنیم:
pidof mysql
حتی برای اطلاعات دقیق تر می توان از دستور ps aux همراه با grep استفاده کرد:
ps aux | grep mysql
حالا ما می دانیم که PID چیست و چگونه PID یک فرآیند خاص را می توانیم پیدا کنیم.
چند قاعده مهم وجود دارد که باید قبل از استفاده فرمان kill بدانیم:
زمانی که قصد کشتن یک پروسه را دارید در واقع قصد فرستان یک سیگنال برای پروسه مورد نظر را دارید که این سیگنال ها شامل موارد زیر می شوند.
۱=Hung up
۹=Kill
۱۵=Terminate
سیگنال Hung up به ندرت استفاده می شود. زمانی که قصد کشتن یک پروسه را داریم معمولا از دستور Kill استفاده می کنیم.
در صورتی که دستور Kill پاسخگو نبود از دستور Terminate استفاده می کنیم.
برای مثال زمانی که می خواهیم یک پروسه را با ID مشخص بکشیم از متد kill -9 PID برای کشتن آن استفاده می کنیم:
kill -9 6738
اگر می خواهید نام فرایند را به جای PID آن برای کشتن آن استفاده کنید، می توانید از دستور pkill استفاده کنید.
برای مثال برای کشتن پروسه ای به نام mysql می توان از این دستور استفاده کرد:
pkill mysql
دو دستور قبلی به منظور کشتن تنها یک فرایند قابل استفاده بودند. اما با دستور killall می توان یک فرایند را با تمام زیر فرایندهای(فرزندان) آن کشت.
برای مثال برای کشتن دستور mysql و تمام زیرفرایند های آن از این دستور استفاده می کنیم.
killall mysql
اینها رایج ترین نمونه هایی از کشتن یک فرایند در لینوکس هستند.
امیدوارم این مطلب برای شما مفید واقع شده باشد.
در آموزش های بعدی همرا ما باشید.