আমি জানি ctrl+ আছে cতবে কখনও কখনও এটি কার্যকর হয় না। উবুন্টু ডেস্কটপে আমি টার্মিনাল উইন্ডোটি বন্ধ করতে এবং এটি ঘটে যখন একটি নতুন খুলতে পারি, তবে উবুন্টু সার্ভারে (বাক্সটি পুনরায় চালু না করে) সিএমআই ব্যবহার করে কীভাবে এটি সমাধান করা হবে?
আমি জানি ctrl+ আছে cতবে কখনও কখনও এটি কার্যকর হয় না। উবুন্টু ডেস্কটপে আমি টার্মিনাল উইন্ডোটি বন্ধ করতে এবং এটি ঘটে যখন একটি নতুন খুলতে পারি, তবে উবুন্টু সার্ভারে (বাক্সটি পুনরায় চালু না করে) সিএমআই ব্যবহার করে কীভাবে এটি সমাধান করা হবে?
উত্তর:
CTRL+CSIGINT
আবেদন পাঠাতে হবে । অ্যাপ্লিকেশনটি এই সিগন্যালের জন্য কোনও হ্যান্ডলার কনফিগার করতে পারে বা এটি সিগন্যালটিকে উপেক্ষা করতে পারে। ডিফল্টরূপে কোনও হ্যান্ডলার নেই এবং SIGINT
অ্যাপ্লিকেশনটি মেরে ফেলবে।
আপনি CTRL+\যা প্রেরণ করতে পারেন তা ব্যবহার করতে পারেন SIGQUIT
। মূল সীমাটি শূন্য না হলে এটি একটি কোর ডাম্পও জেনারেট করে।
আপনি ইচ্ছা করলে প্রক্রিয়াটি স্থগিত এবং শেল সঙ্গে আসতে পারেন CTRL+Z, এই হবে থামাতে শেল প্রম্পট প্রক্রিয়া সঞ্চালনের এবং বিনিময়ে। প্রক্রিয়াটি স্মৃতিতে থাকবে এবং এটি বর্তমান শেলটিতে একটি কাজ হিসাবে উপলব্ধ হবে। তারপরে আপনি সেই কাজটি ব্যবহার করতে kill -SIGNAL %%
বা kill -SIGNAL %<job_ID>
একটি সংকেত প্রেরণ করতে পারেন । উদাহরণস্বরূপ শেষ কাজ ব্যবহার হত্যাkill -9 %%
যদি তাদের মধ্যে কেউ কাজ না করে থাকে তবে আপনি সর্বদা প্রেরণ করতে পারবেন SIGTERM
, তবে সর্বশেষ অবলম্বন হিসাবে, SIGKILL
যা কোনও প্রক্রিয়া শেষ করে দেবে। আপনি যে প্রক্রিয়াটি থামানোর চেষ্টা করছেন বা রুট হিসাবে চেষ্টা করছেন সে হিসাবে অন্য কোনও সংকেত হিসাবে এই সংকেতটি অবশ্যই একই ব্যবহারকারী হিসাবে প্রেরণ করতে হবে। পাঠানোর জন্য SIGKILL
প্রক্রিয়া, প্রথম প্রক্রিয়া খুঁজে ps aux
অথবা ps -edf
, তারপর চালানো kill -SIGKILL <process_ID>
হয়, যেখানে <process_ID>
হয় PID
কলাম ps
আউটপুট।
প্রক্রিয়াটি নিরবচ্ছিন্ন কলটিতে থাকলে সংকেত বিতরণ করা যাবে না। আনইনটারাপ্টিবল কল কার্নেল ফাংশন যে একটি খারাপ চালকের কারণ বন্ধ করা যাবে না এবং সাধারণত ঘটতে (নয় যেমন একটি ড্রাইভারের হয় পুন: প্রবেশ )। কল শেষ না হওয়া বা সার্ভারটি রিবুট না হওয়া পর্যন্ত একটি প্রক্রিয়া যা নিরবচ্ছিন্ন ঘুমে থামানো যায় না।
যদি কোনও প্রক্রিয়া একটি জম্বি হয়ে যায় , তবে এটি কেবল প্রক্রিয়া সারণীতে স্থান গ্রহণ করে কোনও সংস্থান ব্যবহার করবে না। একটি জম্বি প্রক্রিয়া সংকেত পেতে পারে না।
বর্তমান স্থাপত্যের জন্য সংকেতগুলির তালিকাটি পাওয়া যাবে with kill -l
লোক পৃষ্ঠা দেখুন kill
, ps
এবং bash
। কোনও ম্যান পেজ দেখতে এমন কিছু ব্যবহার করুন:man ps
আপনার যদি সম্পূর্ণ কনসোল অ্যাক্সেস থাকে তবে আপনি এটি করতে পারেন Alt- F1..12এবং একটি নতুন কনসোল পান।
সেখান থেকে, আপনি নীচের মত একটি প্রক্রিয়া তালিকা করতে পারেন:
ps aux | grep <process-name>
তারপরে kill
প্রক্রিয়া আইডিতে একটি করুন:
kill -9 <pid>
যদি আপনার কাছে সম্পূর্ণ কনসোল অ্যাক্সেস না থেকে থাকে তবে কেবলমাত্র অন্য একটি টার্মিনাল উইন্ডোটি খুলুন (সম্ভবত পুটি বা অন্য জাতীয় মাধ্যমে) এবং উপরের প্রক্রিয়া তালিকা এবং কিল স্টেপগুলি করুন।
Ctrl C আপনার চলমান প্রক্রিয়াতে একটি সাইন ইন প্রেরণ করে। আপনি যদি অন্য কনসোলটি খুলতে না চান তবে আপনি সিআরটিএল a দিয়ে একটি সিকুইটি পাঠাতে পারেন \ এটি সাইন ইন না করে বেশিরভাগ দিনের হ্যাং অ্যাপগুলিকে সম্বোধন করবে।
আমি ব্যক্তিগতভাবে শর্টকাট দিয়ে একটি সিকিল পাঠানোর উপায় চেয়েছিলাম তবে আমি এটি করার কোনও উপায় সম্পর্কে অবগত নই।
আমি বিবেচনা করি pgrep
এবং একটি স্পষ্ট প্রক্রিয়া ID এর pkill
চেয়ে ব্যবহার করা সহজ tokill
এছাড়াও, সিগন্যাল 9 (সিগ্কিল) দিয়ে শুরু করার পরিবর্তে, ডিফল্ট সিগনটার (15) দিয়ে শুরু করার বিষয়টি বিবেচনা করুন। এটি প্রক্রিয়াটি করুণভাবে শেষ করার সুযোগ দেবে (যদি এটি করতে পারে)।
pkill -15 thing
এবং pkill thing
সমতুল্য হওয়া উচিত।
এটি কিভাবে কাজ করবে তা এখানে's ধরা যাক যে এনটিপিডি হ্যাং হয়েছে।
প্রক্রিয়াগুলি কি? (আপনি যদি বিশ্বাস করেন যে আপনার কাছে মিথ্যা ধনাত্মকতা থাকবে না) আপনি পিকেলে যেতে পারেন)
$ pgrep -fl ntp
1034 /usr/sbin/ntpd
1037 /usr/sbin/ntpd
প্রক্রিয়াগুলি মেরে ফেলুন:
$ pkill ntpd
pgrep
এটি সফল হয়েছে কিনা তা দেখতে আবার ব্যবহার করুন ।
যদি না হয়, শেষ পর্যন্ত যান pkill -9
।
আপনি একটি নতুন টার্মিনালে স্যুইচ করবেন, আটকে থাকা প্রক্রিয়ার পিআইডি খুঁজে পাবেন (ব্যবহার করে ps
), তারপরে kill
প্রক্রিয়াটি মারতে ব্যবহার করুন । আমি প্রথমে ব্যবহার করব kill (PID)
। যদি এটি কাজ না করে, আমি ব্যবহার করব kill -9 (PID)
। যদি এটি প্রক্রিয়াটি বন্ধ না করে তবে মেশিনটিকে পুনরায় বুট করা দরকার।