পুরানো প্রক্রিয়াগুলি (এবং হত্যা) সন্ধান করুন


10

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

আদর্শভাবে আমি সন্ধানের অনুরূপ কিছু চাই তবে প্রক্রিয়াগুলির জন্য।

সিস্টেমটি হ'ল ডেবিয়ান লিনাক্স এবং এটি স্ক্রিপ্ট করা হবে এবং ক্রোন দ্বারা চালিত হবে সুতরাং আমি বড় তবে বোধগম্য কিছু নিয়ে আসল সমস্যা নেই।


4
আপনি কীভাবে পুরানো-তবে গুরুত্বপূর্ণ প্রক্রিয়াগুলির মধ্যে পার্থক্য করতে যাচ্ছেন এবং আপনি যেটিকে হত্যা করতে খুশি?
চপার

উত্তর:


9

আপনি PS, awk এবং কিলের সংমিশ্রণে এটি করতে পারেন:

ps -eo pid,etime,comm

প্রক্রিয়া পিআইডি, প্রসেস শুরু হওয়ার পরে অতিক্রান্ত সময় এবং যুক্তি ছাড়াই কমান্ডের নাম সহ আপনাকে একটি তিনটি কলাম আউটপুট দেয়। অতিবাহিত সময়টি এর মধ্যে একটির মতো লাগে:

mm:ss
hh:mm:ss
d-hh:mm:ss

যেহেতু আপনি এমন প্রক্রিয়াগুলি চান যা এক সপ্তাহেরও বেশি সময় ধরে চলছে, আপনি সেই তৃতীয় প্যাটার্নটির সাথে মিলিয়ে থাকা লাইনগুলি সন্ধান করবেন। প্রসেসগুলি ফিল্টার আউট করার জন্য আপনি সময় মতো এবং কমান্ড নাম দ্বারা চালাতে পারেন, যেমন:

ps -eo pid,etime,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }'

যা my দিনেরও বেশি সময় ধরে চলমান 'মাইকম্যান্ড' এর সাথে মেলে এমন সমস্ত কমান্ডের পিডগুলি মুদ্রণ করবে। সেই তালিকাটিকে হত্যার জন্য পাইপ করুন, এবং আপনি শেষ করেছেন:

ps -eo pid,etime,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }' | kill -9

ভাল লাগল ধন্যবাদ। PS এ ফর্ম্যাট করার বিকল্পগুলি সম্পর্কে সম্পূর্ণরূপে ভুলে গেছি।
রায়ানার

2
এটি আপনাকে "7 দিনের বেশি" চলমান প্রক্রিয়াগুলি দেখায় না। এটি আপনাকে 7 দিনের মধ্যে চলমান প্রক্রিয়াগুলি দেখায় তবে 8 দিনেরও কম।
hobodave

etimesআরও সুবিধাজনক - সার্ভারফল্ট.com
393476

4

killall --quiet --older-than 1w process_name


1
এটি উবুন্টু ১.0.০৪-এ দুর্দান্ত কাজ করে এবং আপনি -i (ইন্টারেক্টিভ) পতাকাটি পরীক্ষা করতে এবং এটি নিশ্চিত হওয়া উচিত যে আপনার যে প্রসেস হওয়া উচিত বলে মনে করছেন তা নিশ্চিত করতে এটি ব্যবহার করতে পারেন।
ইজউইটার

1

আপনার প্রয়োজনীয় সমস্ত তথ্য এখান থেকে নেওয়া যেতে পারে ps -ef। "STIME" কলামটি দেখুন। grepআপনার প্রয়োজনীয় প্রক্রিয়াগুলি সাজানোর জন্য এটি একত্রিত করুন । এই মুহুর্তে, আপনি cutসমস্ত মিলে যাওয়া প্রক্রিয়াগুলির পিডটি ধরতে এবং সেগুলিতে পাস করতে পারেন kill

আপনি কীভাবে এটি করবেন সে সম্পর্কে আরও বিশদ চাইলে দয়া করে আমাকে জানান।


আমি আরও বিশদ চাই। অন্যান্য উত্তরগুলি কেবল ভুল।
হোবডেভ

1

আপনি যদি শিকড় হন তবে আবর্জনা থেকে মুক্তি পেতে (/ proc / fs proc / stat ...)

find /proc -maxdepth 1 -regex '/proc/[0-9]*' -type d -mtime +2 -exec basename {} \;

0

যখন একটি প্রক্রিয়া শুরু হয়, এটি / proc ফাইল সিস্টেমে একটি ডিরেক্টরি তৈরি করে। আপনি ডিরেক্টরি কমান্ডটি 7 দিনের চেয়ে পুরানো ডিরেক্টরিগুলি পেতে এবং প্রক্রিয়াগুলি নীচে নীচে হত্যা করতে পারেন:

find /proc -user myuser -maxdepth 1 -type d -mtime +7 -exec basename {} \; | xargs kill -9 

এটিও কাজ করে না। যেমনটি হ'ল এটি এই সতর্কতা উত্পন্ন করে এবং কোনও অতিরিক্ত আউটপুট দেয় না: find: warning: you have specified the -maxdepth option after a non-option argument -user, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.ম্যাক্সিং-ম্যাক্সডেপথ প্রথম আউটপুট হতে চলেছে এটি কোনও প্রক্রিয়া দেয় না, এবং আমি ইতিবাচক যে অনেকের মিল হওয়া উচিত।
হোবডেভ

এছাড়াও কেন আপনি মিরের তৈরি তারিখটি সন্ধান করছেন সেক্ষেত্রে এমটাইম না? অতিরিক্ত বাচ্চা তৈরি করা হলে দির তাত্ত্বিকভাবে সংশোধন করা যেতে পারে, যা আমি
অস্বীকার

0

এখানে কেউ পিএস-প্রহরী উল্লেখ করেনি । আমার মনে হয় আপনি বর্ধিত 2 সেকশনটি ব্যবহার করে $ স্টার্টটাইম তুলনা করতে সক্ষম হতে পারেন তবে আমি পুরোপুরি নিশ্চিত নই। আমার প্রথম চিন্তা এখানে:

[myproc]
occurs = every
trigger = elapsed2secs('$start_time') > 7*DAYS
action = <<EOT
  echo "$command has been running more than 7 days" | /bin/mail user\@host
  kill -TERM $pid
EOT

এটি যদি কাজ করে তবে কোনও ধারণা নেই, তবে এটি একটি ভাল সূচনা পয়েন্ট হওয়া উচিত।

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