জাভা প্রক্রিয়াগুলি হত্যা করুন


25

আমি একটি গণনামূলক ভারী কোড নিয়ে কাজ করছি যা - আপাতত - অনেকগুলি ক্র্যাশ করে, তবে আমি এটিতে এখনও কাজ করছি :) এটি ক্র্যাশ হয়ে গেলে আমি জিইউআই উইন্ডোটি বন্ধ করতে পারি না; আমাকে একটি শেল খুলতে হবে এবং প্রক্রিয়াটি নষ্ট করতে হবে 9

এটি একটি জাভা প্রক্রিয়া এবং এটি সন্ধান করা সহজ:

nkint@zefiro:~$ ps aux | grep java
nkint   2705 16.6  1.0 460928 43680 ?        Sl   12:23   0:08 /usr/lib/jvm/java-6-sun-1.6.0.26/bin/java -Djava.library.path=something something
nkint   2809  0.0  0.0   4012   776 pts/0    S+   12:24   0:00 grep --color=auto java
nkint@zefiro:~$ kill -9 2705

এখন এটি সহজ তবে বেশ একটি যান্ত্রিক কাজ। তাই সাধারণত আমি প্রায় 7-8 প্রক্রিয়াগুলি ক্র্যাশ হওয়ার জন্য অপেক্ষা করি এবং তারপরে kill -9প্রতিটি।

আমি এটি একটি স্বয়ংক্রিয় উপায়ে করতে চাই। আমি মনে করি যে (এন -1) ফলাফলের আইডি নেওয়ার জন্য কিছু কমান্ড পাইপ করা সহজ হবে ps aux | grep javaএবং এটি মেরে ফেলতে হবে তবে কোথা থেকে শুরু করব তা সম্পর্কে আমার কোনও ধারণা নেই।

কেউ কি আমাকে কোনও ইঙ্গিত দিতে পারেন?

উত্তর:


22

আপনি যেখানে থাকতে চান সেখানে আরও কয়েকটি পাইপ আপনাকে পেয়ে যাবে। আমি এটি কীভাবে করব তা এখানে:

search_terms='whatever will help find the specific process' 

kill $(ps aux | grep "$search_terms" | grep -v 'grep' | awk '{print $2}')

যা হচ্ছে তা এখানে:

grep -v 'grep' ফলাফলগুলি থেকে গ্রেপ প্রক্রিয়া বাদ দেয়।

awk '{print $2}' আউটপুট কেবলমাত্র দ্বিতীয় কলাম মুদ্রণ (এই ক্ষেত্রে পিআইডি)

$(...)কমান্ড প্রতিস্থাপন হয়। মূলত ইনার কমান্ডের ফলাফলটি আর্গুমেন্ট হিসাবে ব্যবহৃত হবেkill

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


49

আপনি যদি নামযুক্ত সমস্ত প্রক্রিয়া হত্যা করতে চান তবে javaনিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

কিল্লাল -9 জাভা

এই আদেশটি তাদের নামের দ্বারা চিহ্নিত প্রক্রিয়াগুলিতে সংকেত প্রেরণ করে।


killall javaআমার পক্ষে কোনও এলোমেলো কারণে যে আমি সমাধান করতে সক্ষম হইনি তার জন্য কাজ করছিলাম না। -9পরামিতি যে যত্ন নেন। ধন্যবাদ.
পল নেলসন বাকের

5
9 হ'ল সিগ্কিল। প্রোগ্রাম এটিকে উপেক্ষা করতে পারে না এবং এটি মূলত বলে: এখন নিজেকে শেষ করুন।
মিলান টডোরোভিচ

ইন্টেলিজিজ ব্যবহারকারীরা তাদের আইডিই টমক্যাট এবং অন্যান্য অনেক অ্যাপের উল্লেখ না করার জন্য ক্র্যাশ করেছে find এটি একটি নিষ্ঠুর শক্তি উপায় এবং নির্ভর করে পরিষেবা বা উত্পাদনশীলতা অ্যাপ্লিকেশন সহ কোনও সিস্টেমে java
tresf

3

একটি পাঠ্য সম্পাদক খুলুন এবং আপনার হোম ডিরেক্টরিতে এই ছোট বাশ স্ক্রিপ্টটিকে 'কুতজাভা' হিসাবে সংরক্ষণ করুন

#! /bin/bash

# Kill Java process

# Determine the pid
PID=`ps -C java -o pid=`

kill -9 $PID

তারপরে chmod u+x ~/killjavaএকটি টার্মিনালে যাতে আপনি ফাইলটি কার্যকর করতে পারেন।

তারপরে আপনি কেবল ~/killjavaএকটি টার্মিনাল থেকে কল করতে পারেন এবং আপনার জাভা প্রক্রিয়াটি পাথর মারা হবে। আপনার জাভা প্রক্রিয়াটি হত্যার ফলে অন্যান্য সংস্থানগুলি (যেমন ডাটাবেস সংযোগগুলি) প্রভাবিত হবে তা বিবেচনা করতে পারেন wish উদাহরণস্বরূপ, সম্ভবত kill -15আরও উপযুক্ত হবে - ব্যাখ্যা এখানে দেখুন


2

@ ডিনের পূর্ববর্তী উত্তরের উপর ভিত্তি করে এখানে একটি বিকল্প পন্থা দেওয়া হয়েছে।

এটি জাভা প্রক্রিয়া সনাক্ত করতে jps ব্যবহার করে।

kill $(jps | grep <MainClass> | awk '{print $1}')

মেইনক্লাস আপনার চলমান জাভা প্রোগ্রামের একটি শ্রেণি যা মূল পদ্ধতিটি ধারণ করে।

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