دوست عزیز، به سایت علمی نخبگان جوان خوش آمدید

مشاهده این پیام به این معنی است که شما در سایت عضو نیستید، لطفا در صورت تمایل جهت عضویت در سایت علمی نخبگان جوان اینجا کلیک کنید.

توجه داشته باشید، در صورتی که عضو سایت نباشید نمی توانید از تمامی امکانات و خدمات سایت استفاده کنید.
نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: چهار راه برای kill نمودن یک فرآیند در گنو/لینوکس

  1. #1
    یار همراه
    نوشته ها
    2,548
    ارسال تشکر
    17,332
    دریافت تشکر: 8,680
    قدرت امتیاز دهی
    15646
    Array

    پیش فرض چهار راه برای kill نمودن یک فرآیند در گنو/لینوکس



    فرمان kill برخلاف اسم زشت و خشنی که دارد اصلا قاتل نیست و قرار هم نیست که قتلی انجام بدهد.
    این فرمان مظلوم، یک قاصدک است و فقط اطلاع‌رسانی می‌نماید؛ وقتی شما این فرمان را وارد می‌کنید، kill به سیستم‌عامل از طریق system call اطلاع می‌دهد که برو و به فلان پروسس بگو که به فلان دلیل بایستی سیستم را ترک نماید و سیستم‌عامل پس از کنترل‌های فراوان به پروسس مقصد اطلاع‌رسانی می‌نماید. فلان دلیل همان شماره سیگنال است که به پروسس ارسال می‌گردد و در مواردی پروسس مقصد می‌تواند سیگنال را ندیده گرفته و به فعالیت خودش ادامه دهد.

    نکته: هیچگاه به پروسس‌هایی که مشغول نوشتن بر روی فایل هستند و مخصوصا پایگاه‌های داده، سیگنال ۹ نفرستید چراکه این سیگنال پدر پروسس را در می‌آورد. به عبارت دیگر گوش پروسس را گرفته و آن را بیرون می‌اندازد و خدا می‌داند که احتمالا چه بلایی به سر پایگاه داده خواهد آمد.


    در هر حال، روش‌های زیادی برای خارج نمودن یک پروسس از حافظه وجود دارد که در زیر به توضیحاتی مختصر در این‌ باره خواهیم پرداخت.
    در خاتمه توصیه می‌گردد که با فرمان man نیم نگاهی به دستورات signal و kill بیاندازید (man 2 kill) و (man 7 signal). همچنین می‌توانید برای مشاهده لیست سیگنال‌ها از دستور (kill –l) استفاده نمایید.

    از دستور kill به منظور ارسال یک سیگنال به پروسس و یا از بین بردن آن استفاده می‌شود. بطور معمول در صورت دانستن PID پروسس از دستور kill بصورت kill –SIGNAL PID استفاده می‌شود. همچنین راه‌های مختلفی جهت kill نمودن پروسس وجود دارد بعنوان مثال: kill نمودن بواسطه نام پروسس، kill نمودن بواسطه قسمتی از نام پروسس، kill نمودن بواسطه نشان‌گر موس در محیط گرافیکی سیستم عامل گنو/لینوکس و …
    در این راهنما به چهار روش جهت kill نمودن پروسس پرداخته خواهد شد.

    دستور kill – از بین بردن و یا به اصطلاح کشتن یک پروسس بوسیله PID
    دستور کیل جهت از بین بردن یک پروسس به واسطه PID آن مورد استفاده قرار می‌گیرد.

    ۱. در تمام مثال‌های زیر در رابطه با دستور kill یک سیگنال پایان‌دهی (Termination) به پروسس مشخصی فرستاده می‌شود. تمامی این سیگنال‌ها را می‌توان یا از طریق نام آن‌ها و یا از طریق شماره آنها مورد استفاده قرار داد. همچنین شما می‌بایست PID پروسس مربوطه را برای این فرایند بدست آورید و از آن بعنوان یک استدلال برای دستور kill بهره گیرید.


    در زیر یک نمونه مثال برای kill نمودن پروسس firefox آورده شده است.

    کد:
    $ ps -ef | grep firefox
    
    1986 ? Sl 7:22 /usr/lib/firefox-3.5.3/firefox
    $ kill -9 1986
    



    دستور killall – از بین بردن و یا به اصطلاح کشتن یک پروسس بوسیله نام آن پروسس

    کاربرد این دستور نیز مانند دستور kill می‌باشد با این تفاوت که بجای مشخص نمودن یک فرایند از طریق PID، می‌توانید از نام آن فرایند جهت فرستادن سیگنال در دستور killall بهره گیرید. لازم به ذکر است اگر بیش از یک فرایند با آن نام اجرا شده باشد همه آنها به واسطه این دستور از بین خواهند رفت.
    به مثال زیر دقت کنید:

    کد:
    $ ps -A | grep httpd
    1445 ?         00:01:00 httpd
    15961 ?        00:00:00 httpd
    15962 ?        00:00:00 httpd
    15963 ?        00:00:00 httpd
    15964 ?        00:00:00 httpd
    15965 ?        00:00:00 httpd
    15966 ?        00:00:00 httpd
    15967 ?        00:00:00 httpd
    15968 ?        00:00:00 httpd
    
    $ killall -9 httpd
    


    دستور pkill – از بین بردن و یا به اصطلاح کشتن یک پروسس بوسیله نام آن پروسس

    شما می‌توانید از طریق مشخص نمودن نام کامل یا قسمتی از نام یک پروسس با استفاده از دستور pkill اقدام به ارسال سیگنال نمایید. لذا برای استفاده از این دستور نیازی به پیدا کردن PID پروسس برای ارسال سیگنال به آن نمی‌باشد، در مثال زیر سیگنال پایان‌دهی (Termination) را برای همه پروسس‌هایی که در نام آن‌ها کلمه sample وجود دارد می‌فرستیم.

    کد:
    $ pkill sample
    مثالی در رابطه با دستور pkill:
    قبل از فرستادن یک سیگنال در صورت ندانستن PID و نام صحیح یک پروسس، به واسطه دستور pgrep می‌توانید به جستجوی نام کامل و PID یک پروسس و پروسس‌های وابسته بپردازید و ببینید که کدام PID متعلق به کدام پروسس است.

    کد:
    $ pgrep -l sample
    12406 sample-server.p
    12425 sample-server.p
    12430 sample-garbagec
    
    $ pkill -USR1 sample
    $ pkill -9 sample
    



    دستور xkill – از بین بردن و یا به اصطلاح کشتن یک پروسس از طریق رابط گرافیکی

    دستور xkill یکی از ساده‌ترین راه‌ها جهت از بین بردن برنامه‌هایی که بصورت ناقص به اجرا درآمده‌اند است. هنگامی که شما می‌خواهید یک پروسس را در محیط گرافیکی ازبین ببرید xkill می‌تواند به واسطه مکان‌نمای انتخابی امکان kill کردن آن پروسس را توسط کلیک کردن بر روی آن فراهم آورد. به نوعی می‌توان گفت این دستور جایگزین Ctrl+Alt+Delete در ویندوز می‌باشد.

    با اجرای دستور xkill در ترمینال یا در بخش اجرای دستورات (Alt+F2) نشانگر ماوس به شکل یک ضربدر در آمده و هر پنجره‌ای که روی آن کلیک کنید را ریشه کن می‌کند.

    اگر می‌خواهید راحت‌تر این کار را انجام دهید و مجبور نباشید دستوری برای این کار وارد کنید، لازم است برای این دستور یک کلید میانبر تعریف کنیم تا هروقت مثلا Ctrl+Alt+Shift را زدید این دستور به کار افتاده و هر پنجره‌ای که روی آن کلیک کنید را منهدم کند.

    کد:
    $ xkill

    معرفی چند سیگنال کاربردی

    SIGTERM 15
    سیگنال پایان‌دهی ۱۵ را می‌توان بطور پیشفرض توسط یکی از فرمان‌های بالا مانند killall به پروسس مد نظر فرستاد. اگرچه ارسال این سیگنال به یک پروسس سبب پایان‌دهی به عملکرد آن می‌شود اما برخلاف سیگنال SIGKILL می‌توان آن را به تعویق انداخته و یا نادیده گرفت. بنابراین SIGTERM به معنی یک درخواست محترمانه از پروسسی مانند mysql است که به آن می‌گوید هر وقت کار شما به اتمام رسیده لطفآ خارج شوید. به همین دلیل در بسیاری از سیستم‌های یونیکسی در هنگام خاموش شدن ابتدا سیگنال SIGTERM به پروسس‌هایی که باید به کار آنها پایان داده شود فرستاده خواهد شد و بعد از چند ثانیه انتظار سپس به پروسس‌های باقی مانده به زور سیگنال SIGKILL فرستاده می‌شود.

    SIGCONT ۱۹,۱۸,۲۵ و SIGSTOP ۱۷,۱۹,۲۳

    زمانی که SIGSTOP به یک پروسس فرستاده می‌شود موجب توقف روند معمول در وضعیت فعلی آن فرایند شده و پروسس فقط در صورتی می‌تواند به کار خود ادامه دهد که سیگنال SIGCONT به همان پروسس ارسال شود. بعنوان مثال گاهی اوقات در حال کامپایل یک برنامه هستید که از طرف مدیر یک کار فورس ماژور به شما محول می‌شود و نیاز است تا پروسس کامپایل را غیرفعال کنید تا بتوانید از منابع سیستمی بیشتری جهت انجام آن کار استفاده نمایید و بعد از اتمام کار، پروسس کامپایل را که تا نصف انجام شده بود، ادامه دهید. در این صورت می‌توانید با استفاده از SIGSTOP در همان لحظه پروسس را بطور موقت STOP کرده و بعد از انجام کار محول شده از سمت مدیر، پروسس کامپایل را جهت ادامه کار با ارسال سیگنال SIGCONT ادامه دهید. به مثال زیر توجه کنید.

    کد:
    $ ps aufx | grep cron
    root      1303  0.0  0.0  19116  1032 ?        Ss   08:14   0:00 cron
    $ killall -SIGSTOP cron
    
    $ ps aufx | grep cron
    root      1303  0.0  0.0  19116  1032 ?        Ts   08:14   0:00 cron
    
    $ kill -SIGCONT cron
    $ ps aufx | grep cron
    root      1303  0.0  0.0  19116  1032 ?        Ss   08:14   0:00 cron
    


    http://linuxreview.ir/1392/09/4-ways-to-kill-a-process-in-linux/


  2. کاربرانی که از پست مفید Joseph Goebbels سپاس کرده اند.


اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. Kill Theory 2009
    توسط LaDy Ds DeMoNa در انجمن فیلم های ترسناک
    پاسخ ها: 0
    آخرين نوشته: 27th March 2010, 10:01 PM
  2. Kiss Me, Kill Me (2009) DVDRip XviD AC3-ViSiON
    توسط LaDy Ds DeMoNa در انجمن فیلم های اکشن
    پاسخ ها: 0
    آخرين نوشته: 19th March 2010, 10:46 PM
  3. Serial blasts kill 17, injure 32 in central Kabul
    توسط matrix در انجمن English News
    پاسخ ها: 0
    آخرين نوشته: 26th February 2010, 08:21 PM
  4. دانلود فیلم To kill a mockingbird
    توسط LaDy Ds DeMoNa در انجمن فيلم های كلاسيک و تاريخی
    پاسخ ها: 0
    آخرين نوشته: 27th January 2010, 04:54 PM

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •