انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید




نویسنده موضوع: وقتی لینوکس هنگ می کند، چکار باید کرد؟  (دفعات بازدید: 12420 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین eMan

  • High Hero Member
  • *
  • ارسال: 1366
  • جنسیت : پسر
من اون روزا این force quit رو به پنل اضافه میکردم و دیگه زمان مابین زدن دکمه close و ظاهر شدن force quit را نداشتم چون مستقیم روی force quit کلیک میکردم و میزدم روی پنجره برنامه
جهت تماس با بنده یا از طریق فروم آرچ و یا از طریق وبلاگ آرچ بوک و یا از طریق ایمیل با بنده تماس بگیرید

آفلاین hamed_ubuntu

  • Sr. Member
  • *
  • ارسال: 251
  • جنسیت : پسر
  • linuxforlife.ir
    • لینوکس برای زندگی
پاسخ : وقتی لینوکس هنگ می کند، چکار باید کرد؟
« پاسخ #16 : 07 اردیبهشت 1392، 12:45 ق‌ظ »
با کلیدهای alt+prt sc+k  هر جور هنگی رفع میشه
تا میتونم باید تلاش کنم.همین

آفلاین vahidreza

  • Jr. Member
  • *
  • ارسال: 88
  • جنسیت : پسر
    • شرکت مهندسی یاقوت
پاسخ : وقتی لینوکس هنگ می کند، چکار باید کرد؟
« پاسخ #17 : 07 اردیبهشت 1392، 03:42 ق‌ظ »
prt چیه ؟ sc چیه ؟ shift را میگین ؟ Escape را میگین ؟

منم تا حالا پیش اومده بود که سیستم هنگ کنه ! بیشتر توی Gimp ! از Ctrl + Alt + f1 هم خبر نداشتم ! حالا خنده داره زدم کلا رفت توی میحط terminal ی ! متوجه شدم با alt + ctrl + f7 بر میگرده ! دفعه بعد امتجان میکنم ببینم میشه یا نه !
حرمت اعتبار خود را هرگز در میدان مقایسه با دیگران مشکن. پیروزمندان نیز از شکست می ترسند اما عنان خویش به وحشت نمی سپارند

آفلاین milad.fashi

  • Hero Member
  • *
  • ارسال: 845
  • جنسیت : پسر
  • میلاد فشی
پاسخ : وقتی لینوکس هنگ می کند، چکار باید کرد؟
« پاسخ #18 : 19 اسفند 1392، 03:21 ب‌ظ »
ساخت میانبر برای System monitor
در Dash بنویسید Keyboard یا میتونید Shortcut هم بنویسید.بعد روی Keyboard کلیک کنید و بعد قسمت Shortcuts بروید و از لیست Custom Shortcuts رو انتخاب کنید.با زدن دکمه + در قسمت Name بنویسید System Monitor و در قسمت Command هم مقدار زیر رو قرار بدید.
 /usr/bin/gnome-system-monitorبعدش بر روی اون کلیک کنید و با زدن دکمه دلخواه یک کلید میانبر ترکیبی برای اجرای System Monitor بسازید.(من خودم Control+Shift+Escape رو انتخاب کردم.مثل ویندوز)بعدش هر وقت یک برنامه خاص کند شد یا در بن بست افتاد یا در حلقه بی نهایت افتاد میتونید خیلی زودتر از لینوکس اون رو بکشید.لینوکس شاید بتونه اون رو Force Close کنه ولی نه به اون سرعتی که شما میتونید این کار رو انجام بدید.چون اولا شما باهوش ترید.و دوما اختیار پردازنده دست برنامه ای هستش که در حلقه بی نهایت افتاده است و سیستم عامل شانس گرفتن پردازنده را نداره و یا شانسش برای گرفتن پردازنده کم شده.
هنگ یا کرش چیه؟

اصطلاحا میگن این برنامه هنگ کرده و درست تر اینه که بگیم برنامه در حلقه یا LOOP بدون حد بالای مشخص افتاده است.منظور از اینکه حد بالا مشخص نیست این است که برنامه یا فرایند ممکنه یک دقیقه یا ۱۰ دقیقه یا ۱ ساعت یا یک روز یا یک سال یا تا ابد در حلقه یا Loopبماند.اگر برنامه شماکشته شود اطلاعاتتون رو از دست میدید. بهترین راه حل صبر کردن و دعا کردن است. :D
اما اگر صبر به خرج دادید .و کاسه صبرتون لبریز شد ](*,) باید دست به کار شید و برنامه (فرآیند یا Process) ای که اختیار پردازنده رو در دست گرفته و پردازنده رو پس نمیده و CPU هم مثل گاو به حرف اون فرآیند گوش میده رو باید کشت.برای کشتن هم کار خیلی ساده است.از زبانه Process باید فرآیند پر رو و خاطی رو کشت.برای کشتن کلیک راست و Kill process.
گاهی هم بار سیستم زیاده و سیستم کند شده.بهترین راه حل قربانی کردن فرآیندی است که مصرف پردازنده بالایی دارد.
اما زمانی که خود سیستم عامل فرآیند خاطی یا پر مصرف شده.یعنی اوضاع خیلی وخیم و بحرانی است و با کشتن یک یا چند فرآیند اوضاع درست و آرام نمیشود و همچنان سیستم به طور محسوس کند است.(به اصطلاح سیستم completely frozen است) باید خود سیستم عامل رو بکشیم.و طبیعتا با کشتن سیستم عامل همه فرآیند ها هم قربانی میشوند چون با  کشتن فرآیند پدر فرآیندهای فرزند که یتیم شده اند با بی رحمی کشته میشوند.برای کشتن فرآیندهای پدر و فرزند و یتیم و ... باید از کلید ترکیبی ALT+Print Screen System Request+K رو فشار بدید تا کل فرآیند ها و سیستم عامل کشته بشه و با این کار سیستم شما Log Out میشه.به Print Screen System Request به اختصار Prt Sc SysRq میگویند.و همون دکمه ای هستش که با اون از دسکتاپ کامپیوتر عکس میگیرد.حرف  K هم حرف اول Kill All process هستش.این کلید سیستم من رو خیلی سریع Log out کرد.و همه پروسس ها رو کشت.
دوستان Ctrl+Alt+F1 هم برای رفتن به محیط متنی است.و اونجا هم بار سیستم کمتره و دست شما باز تره.در اونجا میتونید با نوشتن دستورات زیر فرآیند مورد نظر رو بکشید:
killall fifrefoxیا
pkill firefoxکه شکل کلی دستورات به صورت زیر است :
pkill -TERM program_namekillall program_name
نمایش فرآیند ها در محیط متنی
دستور top یکی از روش های قدیمی برای مشاهده پردازش هایی است که از منابع سیستم استفاده میکنند . البته این دستور پردازش هایی را نمایش میدهد که میزان زیادی از منابع سیستمی را به کار گرفته باشند . اما دستور دیگری به نام htop وجود دارد که نوع بهبود یافته و پیشرفته تر دستور top به حساب می آید . اما برای استفاده از این دستور ، ابتدا باید آن را نصب کنید . چون به صورت پیشفرض در بیشتر توذیع های لینوکسی نصب نیست .اگر قصد داشتید که از لیست خارج شوید ، کافیست کلید “q” را از صفحه کلید بفشارید .
با sudo apt-get install htop به راحتی نصب میشود.

مشاهده پردازش ها با دستور ps :
دستور ps لیست پردازش های در حال اجرا را به شما نشان خواهد دارد . با تایپ دستور زیر میتوانید تمام پردازش های در حال اجرا را مشاهده کنید . به بزرگی کاراکتر A توجه داشته باشید .

ps -A

اگر میخواهید کل لیست به یکباره نمایش داده نشود ، کافیست دستور را به شکل زیر تایپ کنید :

ps -A | less

با تایپ دستور بالا ، ترمینال دارای اسکرول بار نخواهد شد و پس از به اتمام رسیدن ظرفیت نمایش ترمینال ، باید برای دیدن پردازش های بعدی ، کلید اینتر را بفشارید تا پردازش ها ، یک به یک نمایش داده شوند . اگر قصد داشتید که از لیست خارج شوید ، کافیست کلید “q” را از صفحه کلید بفشارید .


نمایش درختی پردازش های جاری با استفاده از دستور pstree :

در بیشتر مواقع اگر یک لیست به صورت درختی نمایش داده شود ، میتوان دید بهتری نسبت به آن داشت و رابطه بین آیتم ها را بهتر فهمید . با استفاده از دستور pstree میتواند نحوه نمایش لیست پردازش ها را به صورت درختی تعیین کنید .

کشتن فرآیندها

 دستور Kill همانطور که از نامش پیداست میتواند یک پردازش را از کار بیندازد و یا به اصطلاح بکشد :D . این دستور با استفاده از کد مربوط به هر پردازش ، هدف خود را شناسایی کرده و آن را از بین میبرد . به عنوان مثال میخواهیم پردازش مربوط به مرورگر فایرفاکس را با این دستور از کار بیندازیم . ابتدا باید پردازش مربوط به فایرفاکس را پیدا کرده و کد مربوط به آن را بدست بیاوریم . اگر یادتان باشد در ابتدا مطلب دستوری را به شما نشان دادیم که با استفاده از آن میتوانستید پردازش مربوط به یک برنامه را از بین همه پردازش ها جداسازی کنید .

ps -A | grep firefox
کدی که در اولین ستون از سمت چپ نوشته شده است ، کد مربوط به پردازش فایرفاکس میباشد . پس این کد را مقابل دستور kill بنویسید . به عنوان مثال :
kill 3684
البته برخی پردازش ها خیلی سرسخت بوده و به راحتی از کار نمی افتند . اما برای این مورد هم چاره ای اندیشیده شده است . شما میتوانید به جای استفاده از دستور kill ، از دستور kill -KiLL و یا kill -9 استفاده کنید . به عنوان مثال میخواهیم پردازشی با کد ۱۵۱۶۸ را که در برابر حذف شدن مقاومت میکند را از کار بیندازیم . میتوانید با دستورات زیر این پردازش را حذف کنید :

kill -KILL 15168kill -9 15168
برای اینکه زحمت پیدا کردن کد پردازش فایرفاکس را از دوش خود بردارید ، میتوانید دستور pgrep را با دستور kill ترکیب کنید . به دستور زیر توجه کنید :

kill $(pgrep firefox)
اگر هم فرآیند سرسخت بود و بسته نشد میتونید دستور رو به این شکل بنویسید:

kill -kill $(pgrep firefox)
حذف پردازش ها با استفاده از نام آنها از طریق دستورات pkill و killall :


اگر میخواهید با استفاده از نام پردازش ها اقدام به حذف آنها کنید ، تنها کافیست از دستورات pkill و killall استفاده کنید .که در بالا هم به آن اشاره شد. به عنوان مثال :

pkill firefoxkillall firefox

تعیین اولویت برای پردازش ها با دستور renice :


گاهی اوقات نیاز میشود تا اولویت یک پردازش را بالاتر ببریم تا پردازنده با اولویت بالاتری به آن رسیدگی کند . از این رو میتوانید از دستور renice کمک بگیرید . این دستور مقداری بین -۱۹ و +۱۹ را به عنوان ورودی دریافت میکند . -۱۹ بیشترین اولویت و +۱۹ کمترین اولویت را به یک پردازش خواهد داد . مقدار ۰ نیز اولویت معمولی را به یک پردازش میدهد . هر پردازش از ابتدا که ایجاد میشود ، مقدار ۰ را به عنوان مقدار پیشفرض دارد .

اما روش استفاده از این دستور نیز مانند دستور kill بر اساس PID یا همان کد مربوط به پردازش است . به عنوان مثال میخواهیم به پردازش مربوط به فایرفاکس که با کد ۳۸۶۸ مشخص شده است ، کمترین اولویت را بدهیم . پس به شکل زیر عمل میکنیم .

renice 19 3868
البته میتوانید از ترکیب این دستور با دستور pgrep برای راحتی کار پیدا کردن کد پردازش مورد نظرتان استفاده کنید .

renice 19 $(pgrep firefox)

البته باید توجه داشته باشید که برای دادن بیشتر اولویت به یک پردازش باید مجوز ریشه ( root ) داشته باشید . بنابراین باید قبل از تایپ دستور به صورت بالا ، عبارت sudo را اضافه کنید . مانند دستور زیر :

sudo renice -19 3868
پس از اجرای دستور بالا از شما درخواست پسورد میشود که باید آن را وارد کنید .

برنامه های هنگ کرده را با دستور xkill ببندید :

گاهی اوقات پیش می آید که برخی برنامه ها هنگ کرده و هرچه روی دکمه close بالا پنجره کلیک میکنیم ، برنامه مورد نظر بسته نمیشود . اگر میخواهید یک راه حل ساده و سریع را برای بستن برنامه مورد نظر تجربه کنید ، کافیست دستور xkill را در ترمینال تایپ کنید . اکنون کرسر موس به شکل یک ضربدر شده است و با آن روی هر پنجره ای کلیک کنید ، بلافاصله بسته خواهد شد . البته به منظور انصراف از این دستور میتوانید روی پنجره مورد نظر راست کلیک کنید .

بازگشت به محیط گرافیکی
البته سیستم من از Ctrl+Alt+F2 تا Ctrl+Alt+F6 هم به محیط متنی(terminal) میره.ولی با Ctrl+Alt+F7 میتونید به محیط گرافیکی برگردید.

زدن تیر خلاص به لینوکس
اما اگر پردازنده به هیچ وقفه ای پاسخ نداد.مثلا موس حرکت نکرد کیبرد کار نکرد.کمی صبر کنید شاید بعد از مدتی به وقفه های شما با تاخیر جواب داد.ولی اگر به هر نوع وقفه ای حتی با تاخیر زیاد واکنش نشون نداد.چاره ای جز Restart کردن و استفاده از دکمه سخت افزاری یا قطع برق ندارید.یا میتونید از دکمه ترکیبی ALT+Print Screen System Request+b برای reboot استفاده کنید. و این کار جالب نیست و ممکنه به اطلاعات روی هارد شما آسیب برسه و کلا پیشنهاد نمیشه.مگر اینکه واقعا مجبور باشید.
ولی اوبونتو به نسبت ویندوز کمتر دچار این وضعیت میشه.البته به نظر من در نگاه اولیه.چون من تازه کارم و تجربه زیادی در اوبونتو ندارم.ولی این حرف که اوبونتو اصلا هنگ نمیکنه خیلی فنی و دقیق نیست.بخشی از کرش کردن ها مربوط به سخت افزار و پردازنده است که اصلا ربطی به سیستم عامل نداره.

کلید های ترکیبی دیگر
دکمه های ترکیبی دیگه به صورت زیر هستش که من تجربه استفاده از اون ها رو ندارم:
    r – Puts the keyboard into raw mode, taking control of it away from the X server.
    e – Sends the terminate signal to all processes, asking them to end gracefully.
    i – Sends the kill signal to all processes, forcing them to end immediately.
    s – Flushes data from your cache to disk.
    u – Remounts all file systems read-only.
    n – Resets the nice level (priority) of all high and realtime priority processes.
    f – Calls oom_kill, which will kill a memory-hogging process.
    o – Shuts off the computer.

دوستان با تجربه تر که از ترکیب Alt + SysRq با حرف های بالا استفاده کرده اند و تجربه استفاده از آن را دارند تجربه خودشون رو به زبون ساده اینجا بنویسن.
« آخرین ویرایش: 19 اسفند 1392، 06:02 ب‌ظ توسط milad.ir86 »
کیفیت زندگی شما را دو چیز تعیین می کند: کتابهایی که می‌خوانید و انسانهایی که ملاقات می‌کنید. (مک لوهان)
To love GNU/Linux, you don't need to hate Microsoft

آفلاین دکتر کاظمی

  • Sr. Member
  • *
  • ارسال: 252
  • جنسیت : پسر
  • Manjaro+Cinnamon
پاسخ : وقتی لینوکس هنگ می کند، چکار باید کرد؟
« پاسخ #19 : 25 مهر 1398، 10:29 ب‌ظ »
با کلیدهای alt+prt sc+k  هر جور هنگی رفع میشه

برای من نشد هیچ کدام از روش ها برای رفع هنگ یا کرش موثر نبودند فقط با دکمه فیزیکی لپ تاپ درست میشه