.\" Copyright (c) 2004, 2023, Oracle and/or its affiliates. All rights reserved. .\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. .\" .\" This code is free software; you can redistribute it and/or modify it .\" under the terms of the GNU General Public License version 2 only, as .\" published by the Free Software Foundation. .\" .\" This code is distributed in the hope that it will be useful, but WITHOUT .\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License .\" version 2 for more details (a copy is included in the LICENSE file that .\" accompanied this code). .\" .\" You should have received a copy of the GNU General Public License version .\" 2 along with this work; if not, write to the Free Software Foundation, .\" Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. .\" .\" Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA .\" or visit www.oracle.com if you need additional information or have any .\" questions. .\" .\" Automatically generated by Pandoc 2.19.2 .\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. .ie "\f[CB]x\f[R]"x" \{\ . ftr V B . ftr VI BI . ftr VB B . ftr VBI BI .\} .el \{\ . ftr V CR . ftr VI CI . ftr VB CB . ftr VBI CBI .\} .TH "JSTATD" "1" "2023" "JDK 21" "JDK Commands" .hy .SH "نام (NAME)" .PP jstatd \- پایش ایجاد و خاتمه‌ی ماشین‌های مجازی مجهز به ابزاردقیق Java HotSpot .SH "خلاصه دستور (SYNOPSIS)" .PP \f[B]نکته:\f[R] این دستور آزمایشی است و پشتیبانی نمی‌شود. .PP \f[V]jstatd\f[R] [\f[I]options\f[R]] .TP \f[I]options\f[R] این بخش نمایانگر گزینه‌های خط فرمان \f[V]jstatd\f[R] است. بخش \f[B]گزینه‌ها (OPTIONS)\f[R] را ببینید. .SH "توضیحات (DESCRIPTION)" .PP دستور \f[V]jstatd\f[R] یک برنامه‌ی کارگزار RMI است که ایجاد و خاتمه‌ی ماشین‌های مجازی مجهز به ابزاردقیق (instrumented) جاوا هات‌اسپات (Java HotSpot) را پایش می‌کند و رابطی فراهم می‌سازد تا ابزارهای پایش از راه دور، نظیر \f[V]jstat\f[R] و \f[V]jps\f[R]، بتوانند به JVMهای در حال اجرا بر روی میزبان محلی متصل شده و اطلاعات مربوط به فرایند JVM را گردآوری نمایند. .PP کارگزار \f[V]jstatd\f[R] به یک رجیستری RMI (RMI registry) بر روی میزبان محلی نیاز دارد. کارگزار \f[V]jstatd\f[R] تلاش می‌کند به رجیستری RMI بر روی درگاه پیش‌فرض، یا درگاهی که با گزینه‌ی \f[V]-p\f[R] \f[V]port\f[R] مشخص می‌کنید، متصل گردد. اگر رجیستری RMI پیدا نشود، یک نمونه درون برنامه‌ی \f[V]jstatd\f[R] ایجاد می‌شود که به درگاه مشخص‌شده با گزینه‌ی \f[V]-p\f[R] \f[V]port\f[R] متصل (bound) می‌شود، یا در صورت قید نشدن گزینه‌ی \f[V]-p\f[R] \f[V]port\f[R]، به درگاه پیش‌فرض رجیستری RMI متصل می‌گردد. می‌توانید با مشخص کردن گزینه‌ی \f[V]-nr\f[R] از ایجاد رجیستری داخلی RMI جلوگیری کنید. .SH "گزینه‌ها (OPTIONS)" .TP \f[V]-nr\f[R] این گزینه در صورت پیدا نشدن رجیستری RMI موجود، تلاشی برای ایجاد رجیستری داخلی RMI درون فرایند \f[V]jstatd\f[R] نمی‌کند. .TP \f[V]-p\f[R] \f[I]port\f[R] این گزینه شماره درگاهی را تعیین می‌کند که انتظار می‌رود رجیستری RMI در آن یافت شود؛ یا در صورت پیدا نشدن، چنانچه گزینه‌ی \f[V]-nr\f[R] مشخص نشده باشد، رجیستری بر روی آن ایجاد گردد. .TP \f[V]-r\f[R] \f[I]rmiport\f[R] این گزینه شماره درگاهی را تعیین می‌کند که رابط اتصال (connector) RMI به آن متصل (bind) می‌شود. در صورت عدم تعیین، از یک درگاه تصادفی در دسترس استفاده خواهد شد. .TP \f[V]-n\f[R] \f[I]rminame\f[R] این گزینه نامی را تعیین می‌کند که شیء دوردست (remote) RMI در رجیستری RMI تحت آن ثبت (bind) می‌شود. نام پیش‌فرض \f[V]JStatRemoteHost\f[R] است. اگر چندین کارگزار \f[V]jstatd\f[R] بر روی یک میزبان راه‌اندازی شوند، می‌توان با مشخص کردن این گزینه، نام شیء RMI صادرشده را برای هر کارگزار یکتا ساخت. با این حال، انجام این کار نیازمند آن است که نام یکتای کارگزار در رشته‌های \f[V]hostid\f[R] و \f[V]vmid\f[R] کارخواه پایشگر گنجانده شود. .TP \f[V]-J\f[R]\f[I]option\f[R] این گزینه یک گزینه‌ی جاوا (\f[V]option\f[R]) را به JVM ارسال می‌کند؛ به گونه‌ای که این گزینه یکی از موارد شرح داده شده در صفحه‌ی راهنمای راه‌انداز برنامه‌ی جاوا است. برای مثال، \f[V]-J-Xms48m\f[R] حافظه‌ی اولیه در هنگام راه‌اندازی را روی ۴۸ مگابایت تنظیم می‌کند. دستور \f[B]java\f[R] را ببینید. .SH "امنیت (SECURITY)" .PP کارگزار \f[V]jstatd\f[R] تنها می‌تواند JVMهایی را پایش کند که مجوزهای دسترسی محلی (native) مناسب را برای آن‌ها داشته باشد. بنابراین، فرایند \f[V]jstatd\f[R] باید با همان اعتبارسنجی کاربری (user credentials) که JVMهای هدف دارند اجرا شود. برخی از اعتبارهای کاربری، مانند کاربر ریشه (root) در سیستم‌عامل‌های Linux و macOS، مجوز دسترسی به ابزاردقیق‌های صادرشده توسط هر JVM روی سامانه را دارا هستند. فرایند \f[V]jstatd\f[R] که با چنین اعتباری اجرا شود می‌تواند هر JVM موجود در سامانه را پایش کند، اما نگرانی‌های امنیتی مضاعفی ایجاد خواهد کرد. .PP کارگزار \f[V]jstatd\f[R] هیچ‌گونه احراز هویتی برای کارخواه‌های راه دور ارائه نمی‌دهد. بنابراین، اجرای یک فرایند کارگزار \f[V]jstatd\f[R]، داده‌های ابزاردقیق صادرشده توسط تمام JVMهایی را که فرایند \f[V]jstatd\f[R] به آن‌ها مجوز دسترسی دارد، در معرض دید هر کاربری در شبکه قرار می‌دهد. این افشای اطلاعات ممکن است در محیط کاری شما نامطلوب باشد؛ بنابراین پیش از اجرای فرایند \f[V]jstatd\f[R] باید سیاست‌های امنیتی محلی را در نظر گرفت، به‌ویژه در محیط‌های عملیاتی (production) یا شبکه‌هایی که امن نیستند. .PP به منظور اهداف امنیتی، کارگزار \f[V]jstatd\f[R] از یک \f[V]ObjectInputFilter\f[R] در RMI بهره می‌برد تا تنها اجازه‌ی وا‌سریال‌سازی (deserialization) به کلاس‌های ضروری داده شود. .PP چنانچه نگرانی‌های امنیتی شما برطرف نمی‌شوند، امن‌ترین اقدام این است که کارگزار \f[V]jstatd\f[R] را اجرا نکرده و از ابزارهای \f[V]jstat\f[R] و \f[V]jps\f[R] به صورت محلی استفاده نمایید. با این وجود، هنگام استفاده از \f[V]jps\f[R] برای دریافت فهرست JVMهای دارای ابزاردقیق، این فهرست شامل JVMهایی که درون کانتینرهای docker اجرا می‌شوند نخواهد بود. .SH "رابط از راه دور (REMOTE INTERFACE)" .PP رابط صادرشده توسط فرایند \f[V]jstatd\f[R] اختصاصی (proprietary) است و تغییر آن حتمی خواهد بود. به کاربران و توسعه‌دهندگان اکیداً توصیه می‌شود از برنامه‌نویسی برای این رابط خودداری کنند. .SH "مثال‌ها (EXAMPLES)" .PP در ادامه مثال‌هایی از اجرای دستور \f[V]jstatd\f[R] ارائه شده است. اسکریپت‌های \f[V]jstatd\f[R] به طور خودکار کارگزار را در پس‌زمینه راه‌اندازی می‌کنند. .SH "رجیستری داخلی RMI (INTERNAL RMI REGISTRY)" .PP این مثال نحوه‌ی شروع یک نشست \f[V]jstatd\f[R] را با یک رجیستری داخلی RMI نشان می‌دهد. این مثال فرض می‌کند که هیچ کارگزار دیگری به درگاه پیش‌فرض رجیستری RMI (درگاه \f[V]1099\f[R]) متصل نیست. .RS .PP \f[V]jstatd\f[R] .RE .SH "رجیستری خارجی RMI (EXTERNAL RMI REGISTRY)" .PP این مثال یک نشست \f[V]jstatd\f[R] را با یک رجیستری خارجی RMI راه‌اندازی می‌کند. .IP .nf \f[CB] rmiregistry& jstatd \f[R] .fi .PP این مثال یک نشست \f[V]jstatd\f[R] را با یک کارگزار رجیستری خارجی RMI روی درگاه \f[V]2020\f[R] راه‌اندازی می‌کند. .IP .nf \f[CB] jrmiregistry 2020& jstatd -p 2020 \f[R] .fi .PP این مثال یک نشست \f[V]jstatd\f[R] را با یک کارگزار رجیستری خارجی RMI روی درگاه \f[V]2020\f[R] و اتصال‌دهنده‌ی JMX متصل به درگاه \f[V]2021\f[R] راه‌اندازی می‌کند. .IP .nf \f[CB] jrmiregistry 2020& jstatd -p 2020 -r 2021 \f[R] .fi .PP این مثال یک نشست \f[V]jstatd\f[R] را با یک رجیستری خارجی RMI روی درگاه 2020 که به \f[V]AlternateJstatdServerName\f[R] متصل است راه‌اندازی می‌کند. .IP .nf \f[CB] rmiregistry 2020& jstatd -p 2020 -n AlternateJstatdServerName \f[R] .fi .SH "جلوگیری از ایجاد رجیستری RMI درون فرایندی (STOP THE CREATION OF AN IN-PROCESS RMI REGISTRY)" .PP این مثال یک نشست \f[V]jstatd\f[R] را راه‌اندازی می‌کند که در صورت پیدا نشدن رجیستری RMI، آن را ایجاد نمی‌کند. این مثال فرض می‌کند که یک رجیستری RMI از قبل در حال اجرا است. اگر رجیستری RMI در حال اجرا نباشد، پیام خطایی نمایش داده می‌شود. .RS .PP \f[V]jstatd -nr\f[R] .RE .SH "فعال‌سازی ثبت وقایع RMI (ENABLE RMI LOGGING)" .PP این مثال یک نشست \f[V]jstatd\f[R] را با فعال بودن قابلیت ثبت وقایع (لاگ‌گیری) RMI راه‌اندازی می‌کند. این تکنیک به عنوان ابزاری کمکی برای عیب‌یابی یا پایش فعالیت‌های کارگزار کاربرد دارد. .RS .PP \f[V]jstatd -J-Djava.rmi.server.logCalls=true\f[R] .RE