আমি কীভাবে লিনাক্সের শেষ প্রসারিত ব্যাকগ্রাউন্ড টাস্কটিকে হত্যা করব?
উদাহরণ:
doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
আমি কীভাবে লিনাক্সের শেষ প্রসারিত ব্যাকগ্রাউন্ড টাস্কটিকে হত্যা করব?
উদাহরণ:
doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????
উত্তর:
বাশে এর জন্য একটি বিশেষ পরিবর্তনশীল রয়েছে:
kill $!
$! পটভূমিতে মৃত্যুদন্ড কার্যকর করা শেষ প্রক্রিয়ার পিআইডি-তে প্রসারিত হয়।
^Z
পটভূমি কাজ করে না, এটি তাদের থামায়। পরবর্তীটি bg
প্রকৃত 'ব্যাকগ্রাউন্ডিং' (পটভূমিতে এক্সিকিউশনটি পুনরায় শুরু করে) করে এবং এরপরে $!
প্রত্যাশা অনুযায়ী কাজ করে।
????
এক বা একাধিক কমান্ডের জন্য ব্রিদিং হত্যা পর নিষ্পন্ন করা হবে, যদি ঐ কমান্ড কোনো কাজ পটভূমি প্রক্রিয়া দ্বারা সম্পন্ন উপর নির্ভর কোন পরিষ্করণ বা সমাপ্তি-আপ কর্ম যা পটভূমি প্রক্রিয়া পরে একটি সংকেত হ্যান্ডলার মধ্যে সঞ্চালন করা হতে পারে মনোযোগী হতে একটি (trappable) সংকেত প্রাপ্তি। এই জাতীয় কোনও 'নির্ভরশীল' কমান্ডের প্রথমটির আগে একটি wait
(সম্ভবত একটি sync
বা এমনকি একটি দ্বারা অনুসরণ করা sleep <n>
) সেরা Best
আপনি জব নম্বর দিয়ে হত্যা করতে পারেন। আপনি যখন কোনও কাজ পটভূমিতে রাখেন তখন আপনি এমন কিছু দেখতে পাবেন:
$ ./script &
[1] 35341
যে [1]
কাজ সংখ্যা এবং মত রেফারেন্সড করা যেতে পারে:
$ kill %1
$ kill %% # Most recent background job
কাজের সংখ্যাগুলির তালিকা দেখতে jobs
কমান্ডটি ব্যবহার করুন । থেকে আরও man bash
:
শেলটিতে একটি চাকরি উল্লেখ করার বিভিন্ন উপায় রয়েছে। চরিত্রটি
%
একটি কাজের নাম পরিচয় করিয়ে দেয়। কাজের নম্বরn
হিসাবে উল্লেখ করা যেতে পারে%n
। কোনও কাজ এটি শুরু করতে ব্যবহৃত নামের একটি উপসর্গ ব্যবহার করে বা তার কমান্ড লাইনে উপস্থিত একটি স্ট্রিং ব্যবহার করেও উল্লেখ করা যেতে পারে। উদাহরণস্বরূপ,%ce
একটি থামানোce
কাজ বোঝায় । যদি উপসর্গ একাধিক কাজের সাথে মেলে, তবে ব্যাশ একটি ত্রুটির কথা জানায়।%?ce
অন্যদিকে ব্যবহার করাce
তার কমান্ড লাইনের স্ট্রিং যুক্ত যে কোনও কাজকে বোঝায় । যদি স্ট্রিংগুলি একাধিক কাজের সাথে মেলে, তবে ব্যাশ একটি ত্রুটির খবর দেয়। প্রতীক%%
এবং%+
বর্তমান কাজের শেল ধারণাটি উল্লেখ করুন, এটি অগ্রভাগে বা ব্যাকগ্রাউন্ডে শুরু হওয়ার সময় শেষ কাজটি বন্ধ ছিল stopped আগের কাজটি ব্যবহার করে রেফারেন্স করা যেতে পারে (কোনও কাজের সুনির্দিষ্টতার সাথে নেই) এছাড়াও বর্তমান কাজকে বোঝায়।%-
। কাজের সাথে সম্পর্কিত আউটপুটে (উদাহরণস্বরূপ, জবস কমান্ডের আউটপুট), বর্তমান কাজটি সর্বদা একটি এর সাথে পতাকাযুক্ত থাকে+
এবং পূর্ববর্তী কাজটি একটি দিয়ে-
। একক%
set -m
) চালু করতে পারেন তবে এটি ইন্টারেক্টিভ ব্যবহারের উদ্দেশ্যে। দেখুন stackoverflow.com/questions/690266/... পাশাপাশি
%1
এবং %%
- বিশেষত। কিছু জিনিস Ctrl-C এ মারা যায় না, তাই আপনার সেগুলি Ctrl-Z করা দরকার এবং তারপরেও kill -9 %%
। একটি উদাহরণ যেখানে আমি এটি দরকারী পেয়েছি তা হ'ল: while true; do mplayer <some unstable online radio>; date >> restarts.log; done
- Ctrl-C কেবল আপনাকে পরবর্তী লুপ পুনরাবৃত্তিতে নিয়ে যাবে। আমার করণীয় আগে ps
বা হতে পারে jobs -l
এবং তারপরে পিআইডি পুনরায় টাইপ করুন যা ক্লান্তিকর।
while true
সঙ্গে while sleep 1
। এটির সাথে বাঁচতে পারলে পুনরায় আরম্ভ করার আগে এটি আপনাকে একটি সংক্ষিপ্ত বিলম্ব দেবে এবং আপনি যদি দুটিবার সিটিআরএল-সি মারেন তবে দ্বিতীয়টি ঘুমকে বাধা দেবে, এটি একটি শূন্য-বহির্গমন দিয়ে শেষ হবে এবং লুপটি ভেঙে যাবে।
এটি সমস্ত পটভূমি প্রক্রিয়া হ'ল:
jobs -p | xargs kill -9
kill -9 %%
টাইপিং কম হয় :)
এটি বিষয়গুলির উত্তরের বাইরে, তবে যারা আগ্রহী তাদের পক্ষে এটি মূল্যবান হতে পারে।
@ জন কুগেলম্যানের উত্তর হিসাবে,% চাকরির নির্দিষ্টকরণের সাথে সম্পর্কিত। কীভাবে দক্ষতার সাথে এটি খুঁজে পাব? কম & প্যাটার্ন কমান্ডটি ব্যবহার করুন, মনে হচ্ছে মানুষ কম পেজার ব্যবহার করছে (নিশ্চিত নয়), ম্যান বাশ টাইপ &% তে টাইপ এন্টারটি কেবল '%' সম্বলিত লাইনগুলি দেখাবে, সমস্ত পুনরায় প্রদর্শন করতে, টাইপ করুন & টাইপ করুন। তারপরে প্রবেশ করুন।
শুধু কিল্ড কমান্ডটি ব্যবহার করুন:
কিল্ল টাস্ক নেম
আরও তথ্য এবং আরও উন্নত বিকল্পের জন্য, "ম্যান কিলাল" টাইপ করুন।
killall python
বা ছিল killall java
।