নামের উপর ভিত্তি করে শেল স্ক্রিপ্ট -9 কিল


28

কীভাবে এই প্রক্রিয়াটি স্বয়ংক্রিয়ভাবে চালিত করার উপায় আছে (সম্ভবত কোনও স্ক্রিপ্ট):

petr@sova:~$ ps -ef | grep middleman
petr     18445  2312  1 12:06 pts/2    00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman                                                                  
petr     18581 13621  0 12:08 pts/0    00:00:00 grep --color=auto middleman
petr@sova:~$ kill -9 18445

দুর্ভাগ্যক্রমে, pkillখুব দুর্বল কারণ আমাকে -9বিকল্পটি চালিয়ে যেতে হবে kill


2
আপনি ব্যবহার করতে পারেন -9সঙ্গে pkillখুব ...
স্টপ ক্ষতি মনিকা

6
আমার মতে এটি ব্যবহারের -KILLচেয়ে আরও মার্জিত এবং যথাযথ -9। কোন সংকেতটি প্রয়োগ-নির্ভর কোন সংকেতের সাথে মিল রয়েছে। লিনাক্স i386 এবং লিনাক্স amd64 এ SIGKILLহতে পারে 9তবে সর্বত্র নয়। ( আরও তথ্যের জন্য এখানে। )
এলিয়াহ কাগন

5
@EliahKagan: যখন আমি ব্যবহার করতে চান -KILL(কারণ এটা কোড আরো পাঠযোগ্য) খুব, এটা উল্লেখ করা উচিত যে SIGKILL = 9হয় POSIX দ্বারা নির্দিষ্ট , তাই -9আজকাল বেশ পোর্টেবল (এবং কার্নেলের বা আর্কিটেকচারের উপর নির্ভর করে না)।
Andrea Corbellini

উত্তর:


36

এই কাজটি করতে আপনি নিজের শেলটি ব্যবহার করতে পারেন:

kill -9 $(pidof middleman)

শেলটি pidof middlemanপ্রথমে কমান্ড কার্যকর করে । পিডোফ (8) এর আউটপুট হ'ল প্রক্রিয়া আইডি। সুতরাং শেলটি pidofপ্রক্রিয়া আইডির সাথে কম্যান্ডকে প্রতিস্থাপন করে এবং সম্পাদন করে kill -9 18845(বা সঠিক প্রক্রিয়া আইডি যাই হোক না কেন)।


এই এবং এর মধ্যে পার্থক্য কি kill -9 $(pgrep middleman)?
অ্যারন ফ্রাঙ্ক

54

কিউবিআইয়ের চেয়ে একটি আরও সহজ সমাধান রয়েছে: killallআসুন আপনি নাম দ্বারা প্রক্রিয়াগুলি মেরে ফেলুন এবং আপনি সংকেত নির্দিষ্ট করতে পারবেন।

killall -9 middleman

দেখুন man killallআরও তথ্য এবং অতিরিক্ত বিকল্পের জন্য (সেখানে বেশ কিছু আছে)।

নামটি যেমন বোঝায়, এটি নামের সমস্ত প্রক্রিয়াতে সিগন্যাল প্রেরণ করে middleman। তবে এটি অন্যান্য উপায়ে (যেমন pkill) থেকে আলাদা নয় । তদুপরি, pkill -9 middlemanএমন প্রক্রিয়াগুলি লক্ষ্যবস্তু করবে যার নাম মিলবে তবে সমান নয় middleman, যেমন middleman2, পাশাপাশি।


2
killallজয়ের জন্য!
Andrea Corbellini

4
সব মধ্যবিত্তদের হত্যা? ওহ প্রিয় ...
টোবিয়াস কেইনজলার

16

অন্যান্য উত্তরগুলি সম্পূর্ণ সঠিক, তবে আমি পাশাপাশি একটি তৃতীয় বিকল্প যুক্ত করতে পারি যাতে সমস্ত এখানে নথিভুক্ত থাকে। আপনি এটি ব্যবহার করতে পারেন:

pkill -9 middleman

দেখুন man pkillআরও তথ্য এবং অতিরিক্ত বিকল্পের জন্য।

আপনি এই পদ্ধতিগুলির মধ্যে কোনটি ব্যবহার করেন তা আসলেই গুরুত্বপূর্ণ নয়। তারা সব কাজ করবে। তবে যদি আপনি কোনওভাবে আচরণটি পরিবর্তন করতে চান তবে দরকারী বিকল্পগুলি জানা থাকলে যেহেতু সংশ্লিষ্ট ম্যান পেজগুলি দেখায় যে অন্যান্য কী কী মিলবে বিকল্পগুলি উপলব্ধ।


আজব, এখানে কাজ করে না। নাওmiddleman*
মেরেক

1
আহ। আরও ঘনিষ্ঠভাবে তাকালে, সম্ভবত মনে হচ্ছে আপনি প্রকৃতপক্ষে ডাকা একটি প্রক্রিয়া না হয়ে আপনি রুবি দোভাষীকে হত্যা করতে চাইছেন middleman। এই যেখানে কিভাবে ঠিক পার্থক্য হল pkill, killall, pidofএবং grepম্যাচ প্রসেস সত্যিই কোন ব্যাপার শুরু!
রবি বাসাক

12
pkill -9 -f middleman

-fবিকল্পটি কেবল প্রক্রিয়া নামের পরিবর্তে এটি সম্পূর্ণ কমান্ড লাইনের সাথে মেলে।

নোট করুন যে -9একটি সর্বশেষ অবলম্বন সিগন্যাল হওয়া উচিত, নিয়মিত ব্যবহার করার মতো কিছু নয়।


1
ধন্যবাদ! আমি সত্যিই ক্ষমতা মেলে মতcomplete command line
cwd

সম্পূর্ণ কমান্ড লাইন সত্যিই দুর্দান্ত!
ওকেপ করুন

10

শুধু মজাদার জন্য, আমি আরও একটি ম্যানুয়াল, পুরানো স্কুল পথ যুক্ত করতে চাই

kill -9 `ps aux | grep middleman | awk '{print $2}'`

1
আমি কয়েক বছর আগে এটি কাজ করেছিলাম এবং প্রশাসক আমাকে একটি চেহারা দিয়েছেন যা বলেছিল "ওকে, দাদা"। অ্যাজকের আগে গ্রেপ -v গ্রেপ যোগ করতে পারে তা নিশ্চিত করার জন্য এটি গ্রেপ কমান্ডটিও মারবে না।
আইয়েন হোল্ডার

@ জাগার্ড, সম্পাদনার জন্য ধন্যবাদ, আমার আইপ্যাডে পিছনের টিকগুলি খুঁজে পেল না। গ্রেপ-ভি একটি ভাল ধারণা ...
গ্রেপ ভি স্লিপসেট

দুর্ঘটনাক্রমে প্রক্রিয়াটি হ্রাস ... grep [m]iddleman ...এড়ানোর জন্য সত্যিকারের পুরানো স্কুলপথটি grepহ'ল। মজার উক্তিটির কারণে গ্রেপটি নিজের সাথে মেলে না।
মিক্কো রেন্টালাইনেন

1
killall -9 -ir regex_pattern

যা ইন্টারেক্টিভ (নিরাপদ) এবং আংশিক কমান্ড নামের সাথে মেলে।

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