কিভাবে একটি পটভূমি প্রক্রিয়া শেষ করতে হবে?


195

আমি ব্যাকগ্রাউন্ডে রিমোট মেশিনে একটি উইজেট শুরু করেছি &। হঠাৎ এটি ডাউনলোড করা বন্ধ হয়ে যায়। আমি এর প্রক্রিয়াটি শেষ করতে চাই, তারপরে কমান্ডটি আবার চালিত করুন। আমি কীভাবে এটি বন্ধ করতে পারি?

আমি এর শেল উইন্ডোটি বন্ধ করি নি। তবে আপনি জানেন যে এটি Ctrl+ Cএবং Ctrl+ ব্যবহার বন্ধ করে দেয় না Z

উত্তর:


255

এটি সম্পর্কে অনেক উপায় আছে।

পদ্ধতি # 1 - PS

আপনি psএই প্রক্রিয়াটির জন্য প্রসেস আইডি সন্ধান করতে কমান্ডটি ব্যবহার করতে পারেন এবং তারপরে প্রক্রিয়াটি মারতে পিআইডি ব্যবহার করতে পারেন।

উদাহরণ

$ ps -eaf | grep [w]get 
saml      1713  1709  0 Dec10 pts/0    00:00:00 wget ...

$ kill 1713

পদ্ধতি # 2 - pgrep

আপনি ব্যবহার করে প্রক্রিয়া আইডিও খুঁজে পেতে পারেন pgrep

উদাহরণ

$ pgrep wget
1234

$ kill 1234

পদ্ধতি # 3 - pkill

আপনি যদি নিশ্চিত হন যে কেবলমাত্র wgetআপনিই এটি চালাচ্ছেন তবে আপনি pkillনামটি দিয়ে কাজটি সরিয়ে দিতে কমান্ডটি ব্যবহার করতে পারেন ।

উদাহরণ

$ pkill wget

পদ্ধতি # 4 - কাজ

আপনি যদি সেই একই শেল থেকে থাকেন তবে যেখান থেকে আপনি কাজটি চালিয়েছেন সেটি এখন পটভূমি। jobsকমান্ডটি ব্যবহার করে এটি চলমান কিনা তা আপনি পরীক্ষা করতে পারেন এবং এটির চাকরির নম্বর দিয়েও হত্যা করতে পারেন।

উদাহরণ

আমার জাল কাজ sleep,।

$ sleep 100 &
[1] 4542

এটির কাজের নম্বরটি সন্ধান করুন। দ্রষ্টব্য: 4542 নম্বরটি প্রক্রিয়া আইডি।

$ jobs
[1]+  Running                 sleep 100 &

$ kill %1
[1]+  Terminated              sleep 100

পদ্ধতি # 5 - এফজি

fgকমান্ডটি ব্যবহার করে আপনি পশ্চাদপটে কাজটি ফোরগ্রাউন্ডে ফিরিয়ে আনতে পারেন ।

উদাহরণ

জাল কাজ sleep,।

$ sleep 100 &
[1] 4650

কাজের নম্বর পান Get

$ jobs
[1]+  Running                 sleep 100 &

অগ্রভাগে # 1 চাকরিটি ফিরিয়ে আনুন এবং তারপরে Ctrl+ ব্যবহার করুন C

$ fg 1
sleep 100
^C
$

jobsকোন হয়েছে outputএবং fg sais: -bash: fg: 1: no such job। তবে টাইপিং fgভাল কাজ করে এবং ভালও pkill wgetকাজ করে। কিন্তু ps -eaf|grep wgetতারপরে kill <process number>ডোজ কাজটি থামায় না। PS: আমি তৃতীয় নম্বরটি প্রক্রিয়া নম্বর হিসাবে ব্যবহার করি ।
মোহাম্মদ ইতেমাদার

1
@ মোহাম্মদইতেমাদ্দার - এর আউটপুট থেকে ২ য় নম্বর ব্যবহার করুন ps। তৃতীয় # হল পিতামাতার প্রক্রিয়া আইডি।
slm

1
@ মোঃ মুহাম্মাদেতেমাদ্দার - আহ, পিএস গ্রিপ খুঁজে পাচ্ছেন। অথচ এমন তো লাগার না: ps -eaef| grep [w]get
slm

1
@ মোহাম্মদমতেমাদ্দার - আপনি এর pgrepপরিবর্তে ব্যবহার করতে পারেন pgrep wget,।
slm

2
@ মোহাম্মদমতেমাদ্দার - দুঃখিত অতিরিক্ত ই একটি টাইপো। পড়া উচিত ps -eaf | grep [w]get। বিকল্পগুলি psম্যান পৃষ্ঠাতে রয়েছে। man ps
slm

70

ব্যাশ আপনি ব্যবহার করতে পারেন fgএবং তারপর পুরোভাগে কাজ পেতে ব্যবহার Ctrl+ +C

বা এর সাথে jobsএবং তারপরে পটভূমিতে প্রক্রিয়াটি তালিকাভুক্ত করুন

kill %1

( jobsআপনাকে দেওয়া নম্বর দ্বারা 1 প্রতিস্থাপন সহ )


13

আপনি kill $!সাম্প্রতিকতম ব্যাকগ্রাউন্ড কাজের জন্য সমানভাবে ব্যবহার করতে পারেন ।


যদি এটি কোনও ব্যাশ প্রোফাইলে একটি উলের মতো কমান্ড হিসাবে ব্যবহৃত হয় তবে একক উদ্ধৃতিতে মোড়ানো নিশ্চিত হন।
নাট রিটার

6

সম্পাদনা: একবার অগ্রভাগে, আপনি Ctrl+ C, বা @ জেলদা উল্লেখ হিসাবে, '% x' দিয়ে হত্যা করতে পারেন যেখানে 'এক্স' কাজ নম্বরটি ডিফল্ট সিগন্যাল প্রেরণ করবে (লিনাক্সের ক্ষেত্রে সম্ভবত সাইনটারএম)।

কেবল fgঅগ্রভাগে আনার জন্য টাইপ করুন , যদি এটি আপনার পশ্চাদপটে শেষ প্রক্রিয়া হয় ('&' দিয়ে)।

এটি যদি সর্বশেষটি না হয় তবে টাইপ করুন: jobsএবং '[]' তে উপস্থাপন করা 'কাজের নম্বর' সন্ধান করুন। তারপরে কেবল টাইপ করুন:

fg 2

.. যেখানে '2' হল কাজের নম্বর, উদাহরণস্বরূপ:

foo@bar:~/junk/books$ jobs
[1]+  Running                 okular how_to_cook_a_turkey.pdf &
foo@bar:~/junk/books$ fg 1
okular how_to_cook_a_turkey.pdf            <- this is now in the foreground.

4

সঠিক উপায়টি হ'ল টাইপ করে jobsতা নষ্ট করার জন্য কাজের নম্বরটি ব্যবহার করুন। পিডটিকে হত্যা করতে ব্যবহার করার জন্য আপনাকে প্রথম উত্তরে উল্লিখিত হিসাবে এটি অগ্রভাগে আনতে হবে।

এটা চেষ্টা কর

~/Desktop$ sleep 1000 &
[1] 7056

~/Desktop$ jobs

[1]+  Running  sleep 1000 &

/Desktop$ kill %1  #(%1 is the job number)

হত্যার ঠিক পরে যদি আপনি চাকরী চালান তবে আপনার এটি দেখা উচিত

Desktop$ jobs
[1]+  Terminated              sleep 1000

4

একটা জিনিষ আমি এখানে দেখছি না, যা আমি খুব দরকারী পাওয়া করেছি, বিশেষ করে যখন কমান্ড খুঁজে পরীক্ষা হয় pidof। আপনি pidof [command]বর্তমানে চলমান কোনও প্রক্রিয়ার আইডি সন্ধান করতে ব্যবহার করতে পারেন । আমি এটি পছন্দ করি কারণ এটি আমাকে যে কমান্ডটি চাইছে তার ID দ্রুত সন্ধান করতে দেয় যা সাধারণত আমি সবেমাত্র অনুরোধ করি।

আপনার একবার পিড হয়ে গেলে আপনি কেবল প্রক্রিয়াটি মেরে ফেলতে পারেন। এটি বর্তমানে কোনও প্রক্রিয়া চলমান হলে হত্যার জন্য সহজ স্ক্রিপ্ট তৈরি করার অনুমতি দেয়।


1
আহ এই আমাকে সাহায্য! % 1 হত্যার কারণে কোনও কারণে কাজ করা হয়নি, "হত্যা: যুক্তিটি বিশ্লেষণ করতে ব্যর্থ: '% 1'" এবং Ctrl + C কাজ করছে না; পিএস বা কোনও কিছুতে প্রক্রিয়া খুঁজে পাওয়া যায় নি কারণ এটি মূল ছিল (আমি ভুলে গিয়েছিলাম আমি এর সাথে সুডো ব্যবহার করেছি)
mjohnsonengr

1

একটি সাধারণ উদাহরণ হল stressহাতিয়ার। যাক আপনি নিম্নলিখিত রান করেছেন:

$ stress -c 4 -m 4 

এবং টার্মিনাল উইন্ডোটি বন্ধ করে দিয়েছে। প্রক্রিয়াটি পটভূমি থেকে আপনার সংস্থানগুলি খাওয়া চালিয়ে যেতে থাকবে।

তার যা আমি করি:

$ x=`pgrep stress` ; sudo kill -9 $x 

pgrepসাবজেক্টেড প্রসেসের পিআইডিগুলি তালিকাভুক্ত করে এবং এটিকে ভেরিয়েবলে সংরক্ষণ করে xযা এরপরে kill -9এটি বন্ধ করার জন্য ব্যবহৃত হয় ।


0

ব্যাশে সর্বশেষ বন্ধ হওয়া প্রক্রিয়াতে (Ctrl-Z) আপনি মারবেন:

kill %%
kill -9 %%

বা যদি চয়ন করতে চান, ব্যবহার করুন:

jobs

তারপর:

kill %N

মত kill %2

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.