JPS(1) JDK Commands JPS(1)

jps - فهرست کردن JVMهای ابزاربندی‌شده روی سیستم مقصد

نکته: این دستور آزمایشی است و پشتیبانی نمی‌شود.

jps [-q] [-mlvV] [hostid]

jps [-help]

از نمایش نام کلاس، نام فایل JAR و آرگومان‌های ارسال‌شده به متد main جلوگیری می‌کند و تنها فهرستی از شناسه‌های محلی JVM تولید می‌نماید.
می‌توانید هر ترکیبی از این گزینه‌ها را مشخص کنید.
  • -m آرگومان‌های ارسال‌شده به متد main را نمایش می‌دهد. خروجی ممکن است برای JVMهای تعبیه‌شده (embedded) برابر با null باشد.
  • -l نام کامل بسته (package) را برای کلاس main برنامه یا مسیر کامل فایل JAR برنامه نمایش می‌دهد.
  • -v آرگومان‌های ارسال‌شده به JVM را نمایش می‌دهد.
  • -V از نمایش نام کلاس، نام فایل JAR و آرگومان‌های ارسال‌شده به متد main جلوگیری می‌کند و تنها فهرستی از شناسه‌های محلی JVM تولید می‌نماید.
شناسه میزبان که گزارش فرآیند باید برای آن تولید شود. hostid می‌تواند شامل بخش‌های اختیاری باشد که پروتکل ارتباطی، شماره پورت و سایر داده‌های مختص پیاده‌سازی را مشخص می‌کنند. بخش شناسه میزبان (HOST IDENTIFIER) را ببینید.
پیام راهنمای دستور jps را نمایش می‌دهد.

دستور jps ماشین‌های مجازی Java HotSpot ابزاربندی‌شده روی سیستم مقصد را فهرست می‌کند. این دستور محدود به گزارش اطلاعات دربارهٔ JVMهایی است که مجوز دسترسی به آن‌ها را دارد.

اگر دستور jps بدون مشخص کردن hostid اجرا شود، به دنبال JVMهای ابزاربندی‌شده روی میزبان محلی می‌گردد. اگر همراه با یک hostid آغاز شود، با استفاده از پروتکل و پورت مشخص‌شده، به دنبال JVMها روی میزبان تعیین‌شده می‌گردد. فرض بر این است که یک فرآیند jstatd روی میزبان مقصد در حال اجراست.

دستور jps شناسه محلی JVM یا همان lvmid را برای هر JVM ابزاربندی‌شده که روی سیستم مقصد پیدا شده است، گزارش می‌دهد. lvmid معمولاً، اما نه لزوماً، شناسه فرآیند سیستم‌عامل برای فرآیند JVM است. بدون هیچ گزینه‌ای، دستور jps شناسهٔ lvmid هر برنامه جاوا را به همراه شکل کوتاه نام کلاس یا نام فایل jar برنامه فهرست می‌کند. شکل کوتاه نام کلاس یا نام فایل JAR، اطلاعات بستهٔ (package) کلاس یا اطلاعات مسیر فایل JAR را حذف می‌کند.

دستور jps از راه‌انداز جاوا (Java launcher) برای یافتن نام کلاس و آرگومان‌های ارسال‌شده به متد main استفاده می‌کند. اگر JVM مقصد با یک راه‌انداز سفارشی راه‌اندازی شده باشد، نام کلاس یا فایل JAR و آرگومان‌های متد main در دسترس نخواهند بود. در این حالت، دستور jps رشتهٔ Unknown را برای نام کلاس یا نام فایل JAR و برای آرگومان‌های متد main خروجی می‌دهد.

فهرست JVMهای ارائه‌شده توسط دستور jps می‌تواند توسط مجوزهای اعطاشده به کاربری که دستور را اجرا می‌کند، محدود شود. این دستور تنها JVMهایی را فهرست می‌کند که کاربر طبق سازوکارهای کنترل دسترسی مختص سیستم‌عامل، حق دسترسی به آن‌ها را داشته باشد.

شناسه میزبان یا hostid، رشته‌ای است که سیستم مقصد را مشخص می‌کند. نحو (syntax) رشتهٔ hostid با نحو یک URI مطابقت دارد:

[protocol:][[//]hostname][:port][/servername]

پروتکل ارتباطی. اگر protocol حذف شود و hostname مشخص نشده باشد، پروتکل پیش‌فرض یک پروتکل محلی بهینه‌سازی‌شده و مختص پلتفرم است. اگر پروتکل حذف شود و یک نام میزبان مشخص شده باشد، پروتکل پیش‌فرض rmi خواهد بود.
یک نام میزبان یا نشانی IP که میزبان مقصد را نشان می‌دهد. اگر پارامتر hostname را حذف کنید، میزبان مقصد همان میزبان محلی در نظر گرفته می‌شود.
پورت پیش‌فرض برای برقراری ارتباط با کارگزار دوردست. اگر پارامتر hostname حذف شود یا پارامتر protocol یک پروتکل محلی بهینه‌سازی‌شده را مشخص کند، پارامتر port نادیده گرفته می‌شود. در غیر این صورت، نحوهٔ برخورد با پارامتر port وابسته به پیاده‌سازی است. برای پروتکل پیش‌فرض rmi، پارامتر port شماره پورت برای rmiregistry روی میزبان دوردست را نشان می‌دهد. اگر پارامتر port حذف شود و پارامتر protocol نشان‌دهندهٔ rmi باشد، پورت پیش‌فرض rmiregistry (1099) استفاده می‌شود.
برخورد با این پارامتر به پیاده‌سازی بستگی دارد. برای پروتکل محلی بهینه‌سازی‌شده، این فیلد نادیده گرفته می‌شود. برای پروتکل rmi، این پارامتر رشته‌ای است که نام شیء دوردست RMI روی میزبان دوردست را نشان می‌دهد. گزینهٔ -n از دستور jstatd را ببینید.

خروجی دستور jps از الگوی زیر پیروی می‌کند:

lvmid [ [ classname | JARfilename | "Unknown"] [ arg* ] [ jvmarg* ] ]

همه نشانه‌های خروجی با فاصله (white space) جدا می‌شوند. یک مقدار arg که شامل فاصله در درون خود باشد، هنگام تلاش برای نگاشت آرگومان‌ها به پارامترهای مکانی واقعی آن‌ها، ابهام ایجاد می‌کند.

نکته:

توصیه می‌شود اسکریپت‌هایی برای تجزیهٔ خروجی jps ننویسید، زیرا این قالب ممکن است در نسخه‌های بعدی تغییر کند. اگر اسکریپت‌هایی می‌نویسید که خروجی jps را تجزیه می‌کنند، انتظار داشته باشید که برای نسخه‌های بعدی این ابزار مجبور به اصلاح آن‌ها شوید.

این بخش مثال‌هایی از دستور jps را ارائه می‌دهد.

فهرست کردن JVMهای ابزاربندی‌شده روی میزبان محلی:

jps
18027 Java2Demo.JAR
18032 jps
18005 jstat

مثال زیر JVMهای ابزاربندی‌شده روی یک میزبان دوردست را فهرست می‌کند. این مثال فرض می‌کند که کارگزار jstat و رجیستری داخلی RMI آن یا یک فرآیند مجزای خارجی rmiregistry روی میزبان دوردست و روی پورت پیش‌فرض (پورت 1099) در حال اجرا هستند. همچنین فرض می‌کند که میزبان محلی مجوزهای مناسب برای دسترسی به میزبان دوردست را داراست. این مثال شامل گزینهٔ -l است تا شکل کامل نام کلاس‌ها یا نام‌های فایل JAR را خروجی دهد.

jps -l remote.domain
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
2857 sun.tools.jstatd.jstatd

مثال زیر JVMهای ابزاربندی‌شده روی یک میزبان دوردست با پورتی غیرپیش‌فرض برای رجیستری RMI را فهرست می‌کند. این مثال فرض می‌کند که کارگزار jstatd همراه با یک رجیستری داخلی RMI که به پورت 2002 متصل شده است، روی میزبان دوردست در حال اجراست. این مثال همچنین از گزینهٔ -m برای گنجاندن آرگومان‌های ارسال‌شده به متد main هر یک از برنامه‌های جاوای فهرست‌شده استفاده می‌کند.

jps -m remote.domain:2002
3002 /opt/jdk1.7.0/demo/jfc/Java2D/Java2Demo.JAR
3102 sun.tools.jstatd.jstatd -p 2002
2026 JDK 25.0.4.1