JPS(1) دستورهای JDK JPS(1)

jps - فهرست کردن ماشین‌های مجازی جاوای HotSpot در حال اجرا در سیستم در OpenJDK 21

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

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

jps [-help]

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

دستور jps فهرستی از ماشین‌های مجازی جاوای 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* ] ]

تمام بخش‌های خروجی با فاصله خالی از هم جدا می‌شوند. اگر مقدار 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
2023 JDK 21