JPS(1) JDK Commands JPS(1)

jps - نمایش وضعیت پردازه‌های ماشین مجازی جاوا (JVM) (نسخه ۲۶)

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

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

jps [-help]

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

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

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

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

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

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

شناسه میزبان یا hostid رشته‌ای است که سیستم مقصد را مشخص می‌کند. قالب نحوی رشته 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 که شامل فاصله‌های داخلی باشد، هنگام نگاشت آرگومان‌ها به پارامترهای مکانی واقعی آن‌ها ابهام ایجاد می‌کند.

نکته:

توصیه می‌شود اسکریپت‌هایی برای تجزیه (parse) خروجی 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 26.0.2.1