আমি বাশাতে সমস্ত জাভা প্রক্রিয়া কীভাবে তালিকাবদ্ধ করতে পারি? আমার কমান্ড লাইন দরকার আমি জানি যে কমান্ড আছে ps
কিন্তু আমি জানি না আমার কী পরামিতি ব্যবহার করা উচিত।
ps
তারপর প্রথম চেষ্টা man ps
, info ps
এবং ইন্টারনেট এটা সম্পর্কে জানতে।
আমি বাশাতে সমস্ত জাভা প্রক্রিয়া কীভাবে তালিকাবদ্ধ করতে পারি? আমার কমান্ড লাইন দরকার আমি জানি যে কমান্ড আছে ps
কিন্তু আমি জানি না আমার কী পরামিতি ব্যবহার করা উচিত।
ps
তারপর প্রথম চেষ্টা man ps
, info ps
এবং ইন্টারনেট এটা সম্পর্কে জানতে।
উত্তর:
সাম্প্রতিক জাভা জাভা ভার্চুয়াল মেশিন প্রক্রিয়া স্থিতি সরঞ্জাম "jps" এর সাথে আসে
http://download.oracle.com/javase/1.5.0/docs/tooldocs/share/jps.html
উদাহরণ স্বরূপ,
[nsushkin@fulton support]$ jps -m
2120 Main --userdir /home/nsushkin/.netbeans/7.0 --branding nb
26546 charles.jar
17600 Jps -m
jps -lV
সবচেয়ে দরকারী। প্রিন্টগুলি কেবল পিড এবং যোগ্য মূল শ্রেণীর নাম:
2472 com.intellij.idea.Main
11111 sun.tools.jps.Jps
9030 play.server.Server
2752 org.jetbrains.idea.maven.server.RemoteMavenServer
জাভা 7 থেকে শুরু করে , সবচেয়ে সহজ উপায় এবং কম ত্রুটিযুক্ত প্রবণটি হ'ল jcmd
জেডিকে-র অংশ এমন কমান্ডটি ব্যবহার করা যাতে এটি সমস্ত ওএসে একইভাবে কাজ করবে।
উদাহরণ:
> jcmd
5485 sun.tools.jcmd.JCmd
2125 MyProgram
jcmd
চলমান জাভা ভার্চুয়াল মেশিনে (জেভিএম) ডায়াগনস্টিক কমান্ড অনুরোধগুলি প্রেরণ করতে দেয়।
কীভাবে ব্যবহার করবেন সেjcmd
সম্পর্কে আরও বিশদ ।
jps
আরও ভাল আউটপুট বিন্যাসের জন্য এই কমান্ডটি পরীক্ষা করুন:
ps -fC java
এটি লিনাক্স পরিবেশে চলমান সমস্ত জাভা প্রক্রিয়া ফিরিয়ে দেবে। তারপরে আপনি প্রক্রিয়া আইডি ব্যবহার করে প্রক্রিয়াটি মেরে ফেলতে পারেন।
ps -e|grep java
ps aux | grep java
অথবা
$ ps -fea|grep -i java
আমি যদি কেবল জাভা প্রক্রিয়াগুলির তালিকা করতে চাই তবে ব্যবহার করুন:
ps -A | grep java
pgrep -l java
ps -ef | grep java
grep
ps axuwww | grep java | grep -v grep
উপরের উইল
(বিটিডব্লিউ, এই উদাহরণটি কার্যকর নয়, তবে মনে রাখা সহজ);)
আপনি উপরেরটি অন্য কমান্ডে পাইপ করতে পারেন, উদাহরণস্বরূপ:
ps axuwww | grep java | grep -v grep | sed '.....' | while read something
do
something_another $something
done
ইত্যাদি ...
যখন আমি জানতে চাই যে কোনও নির্দিষ্ট জাভা ক্লাস কার্যকর হচ্ছে কিনা, আমি নিম্নলিখিত কমান্ড লাইনটি ব্যবহার করি:
ps ww -f -C java | grep "fully.qualified.name.of.class"
ওএস সাইড ভিউ থেকে, প্রক্রিয়াটির কমান্ডের নাম "জাভা"। "ডাব্লুডাব্লু" বিকল্পটি কলমের সর্বাধিক অক্ষরকে প্রশস্ত করে, সুতরাং সম্পর্কিত শ্রেণীর FQN গ্রেপ করা সম্ভব।
$ top
কেবল "জাভা" কমান্ড হিসাবে দেয় যা সিপিইউ হগিং করছে কোন প্রক্রিয়াটি সনাক্ত করার চেষ্টা করার সময় সমস্ত সহায়ক নয় helpful $ ps ww -fC java
ধাঁধা অনুপস্থিত টুকরা সরবরাহ করে।
আমি যখন রেডহাট লিনাক্সে ওপেনজেডকে -১.৮ ব্যবহার করে চেষ্টা করেছি তখন জেএসপিএস এবং জেএমসিডি আমাকে কোনও ফলাফল দেখায় নি। এমনকি যদি এটি কেবলমাত্র বর্তমান ব্যবহারকারীর অধীনে প্রক্রিয়াগুলি দেখায় যা আমার ক্ষেত্রে কাজ করে না। পিএস | গ্রেপ ব্যবহার করে আমি যা করেছিলাম তা শেষ হয়েছে তবে কিছু জাভা অ্যাপ্লিকেশনগুলির জন্য শ্রেণীর পথটি দীর্ঘ দীর্ঘ হতে পারে যা ফলাফলকে অবৈধ করে তোলে তাই আমি এটিকে সরাতে সেড ব্যবহার করেছি sed এটি কিছুটা রুক্ষ এখনও তবে পিআইডি, ব্যবহারকারী, জাভা-শ্রেণি / জার, আরগস বাদে সবকিছু মুছে দেয়।
ps -o pid,user,cmd -C java | sed -e 's/\([0-9]\+ *[^ ]*\) *[^ ]* *\([^$]*\)/\1 \2/' -e 's/-c[^ ]* [^ ]* \|-[^ ]* //g'
ফলাফলগুলি দেখতে এমন কিছু দেখাচ্ছে:
PID USER CMD
11251 userb org.apache.zookeeper.server.quorum.QuorumPeerMain ../config/zookeeper.properties
19574 userb com.intellij.idea.Main
28807 root org.apache.nifi.bootstrap.RunNiFi run
28829 root org.apache.nifi.NiFi
সমস্ত প্রক্রিয়া তালিকাবদ্ধ করার জন্য উইন্ডোতে একটি বিকল্প হ'ল:
WMIC path win32_process where "Caption='java.exe'" get ProcessId,Commandline
তবে এটিকে আরও সুস্পষ্ট করার জন্য কিছু বিশ্লেষণের দরকার পড়ে।
এটি করার অনেকগুলি উপায় রয়েছে। java.lang.ProcessBuilder
প্রক্রিয়া আইডি (পিআইডি) পেতে এর মতো কিছু সহ আপনি "pgrep" ব্যবহার করতে পারেন pgrep -fl java | awk {'print $1'}
। অথবা, আপনি যদি লিনাক্সের অধীনে চলতে থাকেন তবে আপনি /proc
ডিরেক্টরিটি জিজ্ঞাসা করতে পারেন ।
আমি জানি, এটি ভয়ঙ্কর বলে মনে হচ্ছে, এবং বহনযোগ্য নয় এবং এমনকি খারাপভাবে প্রয়োগ করা হয়েছে, আমি সম্মত। তবে জাভা আসলে কোনও ভিএম-তে চলেছে, এমন কোনও অযৌক্তিক কারণে যে জেডিকে কাজ করার পরে ১৫ বছরের বেশি পরে আমি সত্যিই বুঝতে পারি না, কেন জেভিএম জায়গার বাইরে জিনিসগুলি দেখা সম্ভব নয়, এটি আপনার সাথে সত্যিই হাস্যকর ulous চিন্তা করুন. এমনকি আপনি fork
এবং join
শিশু প্রক্রিয়াগুলি সমস্ত কিছু করতে পারেন (সেগুলি মাল্টিটাস্কিংয়ের এক ভয়ঙ্কর উপায় ছিল যখন বিশ্ব থ্রেড বা পাইথ্রেড সম্পর্কে জানে না , জাভা কী! জাভা দিয়ে কী চলছে !? :)!
এটি আমার জানা একটি বিশাল আলোচনা দেবে, তবে যাইহোক, আমি খুব ভাল একটি এপিআই তৈরি করেছি যা আমি ইতিমধ্যে আমার প্রকল্পগুলিতে ব্যবহার করেছি এবং এটি যথেষ্ট স্থিতিশীল ( এটি ওএসএস যাতে আপনার সত্যিকারের এপিআইয়ের উপর নির্ভর করার আগে ব্যবহার করা প্রতিটি সংস্করণ পরীক্ষা করার দরকার আছে ): https : //github.com/jezhumble/javasysmon
জাভাডোক: http://jezhumble.github.io/javasysmon/ , ক্লাসের জন্য অনুসন্ধান করুন com.jezhumble.javasysmon.OsProcess
, তিনি কৌশলটি করবেন। আশা করি এটি সাহায্য করেছে, শুভকামনা।
ps -eaf | grep [j]ava
এটি আরও ভাল কারণ এটি কেবল আপনাকে সক্রিয় প্রক্রিয়াগুলি প্রদর্শন করবে যাতে এই কমান্ডটি অন্তর্ভুক্ত নয় যা জাভা স্ট্রিংটিও []
কৌতুক করে
আমি এটি ব্যবহার করি (দেবিয়ান 8 তে ভাল):
alias psj='ps --no-headers -ww -C java -o pid,user,start_time,command'
লিনাক্স মেশিনে চলছে জাভা তালিকা জানতে। PS -e | গ্রেপ জাভা