আমি কীভাবে জানতে পারি যে বর্তমানে কোন জার-ফাইল জাভা চলছে (এবং তাদের পিআইডি)?


12

আমার একটি .jarফাইল রয়েছে যা ত্রুটিযুক্ত কারণে কুখ্যাত। যখন কোনও ত্রুটি দেখা দেয় তখন কেবল পুনরায় চালু করতে সহায়তা করে। আমার সেই ত্রুটিগুলি সনাক্ত করার একটি উপায় আছে (বলে দেওয়া লগ-ফাইলটি পড়ে .jar) সুতরাং আমি একটি স্ক্রিপ্ট লিখতে চাই, যা যখনই ত্রুটি দেখা দেয় তখন প্রক্রিয়াটিকে হত্যা করে। সমস্যা হল:

confus@confusion:~$ ps -A
...
4438 ?        00:00:00 java
4439 ?        00:00:00 java
4443 ?        00:00:00 java
...

সমস্ত চলমান .jarগুলি এর প্রক্রিয়া নাম স্বাভাবিকভাবেই "জাভা"। আমি কীভাবে জানতে পারি, এই "জাভা" -র মধ্যে কোনটি আমি হত্যা করতে চাইছি, অর্থাৎ যেটি চলছে foobar.jar?


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

উত্তর:


11

আপনি lsofকমান্ডটি চালনা করতে পারেন , যা যুক্তি হিসাবে দেওয়া আপনার জার ফাইল সহ কোন প্রসেসে খোলা ফাইল রয়েছে তা তালিকাবদ্ধ করে। কম সহ একটি ফাইল দেখা উদাহরণ:

egil@mutter:~$ lsof foo.c
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
less    18871 egil    4r   REG    8,2        0 53862540 foo.c
egil@mutter:~$

কোনও স্ক্রিপ্টে পিডটি সহজেই পুনরায় ব্যবহার করতে, আপনি এটি টিয়ার মোডে চালাতে পারেন:

egil@mutter:~$ lsof -t foo.c
18871

এই উত্তর আরও ভাল। +1 টি।
অষ্টাভিয়ান এ ডামিয়েন

7

ব্যবহার ps axসাহায্য করবে।

এটি বিএসডি শৈলীতে প্রক্রিয়া গাছ প্রদর্শন করবে যা সহজভাবে আরও তথ্য দেখায়।

আপনার নির্দিষ্ট প্রক্রিয়াটি সন্ধান করতে আপনাকে কেবল জেআর নামের জন্য গ্রেপ করতে হবে। ps ax | grep JARNAMEএটা করবো.


1

আপনি এই নেটিভটি করতে পারেন বা যদি "lsof" / proc // fd এর মাধ্যমে ইনস্টল না করা হয় উদাহরণ:

ps -ef|grep -w java
...
0c4       6917  6916  0 12:22 pts/7    00:00:00 java
...

ls -la /proc/6917/fd/
total 0
dr-x------ 2 0c4 svauser  0 Apr  2 12:23 .
dr-xr-xr-x 9 0c4 svauser  0 Apr  2 12:22 ..
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 0 -> /dev/pts/7
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 1 -> /dev/pts/7
lrwx------ 1 0c4 svauser 64 Apr  2 12:23 2 -> /dev/pts/7
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 3 -> /opt/jdk1.8.0_191/jre/lib/rt.jar
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 4 -> /media/veracrypt1/Downloads/rr/testone.jar
lr-x------ 1 0c4 svauser 64 Apr  2 12:23 5 -> /usr/share/java/gnu-getopt-1.0.14.jar

0

আপনি এমন বিকল্পগুলির jpsসাথে ব্যবহার করতে পারেন -lযা পুরো পথের সাথে ব্যবহৃত জাজার ফাইলটি ফেরত দেবে।

-l অ্যাপ্লিকেশনটির মূল শ্রেণীর জন্য পুরো প্যাকেজের নাম বা অ্যাপ্লিকেশনটির জেআর ফাইলটিতে পুরো পথের নাম প্রদর্শন করে।


প্রশ্ন জিজ্ঞাসা করা হলে jps জাভা রানটাইমগুলিতে উপস্থিত ছিল না। এটি আজ উপলব্ধ পাওয়া যায়।
থরবজর্ন রাভন অ্যান্ডারসন

আমি এটি জাভা এসই 6 নথিগুলিতে দেখতে পাচ্ছি: ডকস.ওরাকল.com / javase/ 6/docs/ technotes / tools / share / jps.html এবং এটি ডিসেম্বর ২০০ 2006 থেকে আমি এখানে দেখতে পাচ্ছি: en.wikedia.org/ উইকি / জাভা_ভার্সন_ ইতিহাস # জাভা_স_7
ফ্রয়েবলসমার্টিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.