'\" t .TH "SYSTEMD\-ANALYZE" "1" "" "systemd 257.13" "systemd-analyze" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" systemd\-analyze \- تحلیل و عیب‌یابی عملکرد بوت و سیستم در systemd .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] [time] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] blame .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] critical\-chain [\fIUNIT\fR...] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] dump [\fIPATTERN\fR...] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] plot [>file\&.svg] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] dot [\fIPATTERN\fR...] [>file\&.dot] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] unit\-files .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] unit\-paths .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] exit\-status [\fISTATUS\fR...] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] capability [\fICAPABILITY\fR... | {\-m\ |\ \-\-mask}\ \fIMASK\fR] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] condition \fICONDITION\fR\&... .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] syscall\-filter [\fISET\fR\&...] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] filesystems [\fISET\fR\&...] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] calendar \fISPEC\fR... .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] timestamp \fITIMESTAMP\fR... .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] timespan \fISPAN\fR... .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] cat\-config \fINAME\fR|\fIPATH\fR... .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] compare\-versions \fIVERSION1\fR [\fIOP\fR] \fIVERSION2\fR .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] verify \fIFILE\fR... .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] security [\fIUNIT\fR...] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] inspect\-elf \fIFILE\fR... .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] malloc [\fID\-BUS\ SERVICE\fR...] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] fdstore \fIUNIT\fR... .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] image\-policy \fIPOLICY\fR... .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] has\-tpm2 .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] pcrs [\fIPCR\fR...] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] srk [\fI>FILE\fR] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] architectures [\fINAME\fR...] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fR [OPTIONS...] smbios11 .SH "توضیحات (DESCRIPTION)" .PP دستور \fBsystemd\-analyze\fR می‌تواند برای تعیین آمار عملکرد راه‌اندازی (بوت) سیستم، دریافت سایر اطلاعات وضعیت و ردگیری از مدیر سیستم و سرویس‌ها، و اعتبارسنجی درستی فایل‌های واحد (unit files) به کار رود\&. این ابزار همچنین برای دسترسی به توابع ویژه‌ای که برای عیب‌یابی پیشرفته مدیر سیستم مفید هستند استفاده می‌شود\&. .PP اگر هیچ دستوری مشخص نشود، \fBsystemd\-analyze time\fR به‌طور پیش‌فرض در نظر گرفته می‌شود\&. .SS "systemd\-analyze time" .PP این دستور مدت‌زمان صرف‌شده در هسته (kernel) قبل از رسیدن به فضای کاربری (userspace)، مدت‌زمان صرف‌شده در initrd قبل از رسیدن به فضای کاربری عادی سیستم، و مدت‌زمانی که فضای کاربری عادی سیستم برای مقداردهی اولیه صرف کرده است را چاپ می‌کند\&. توجه داشته باشید که این اندازه‌گیری‌ها صرفاً زمان سپری‌شده تا نقطه‌ای را می‌سنجند که همه سرویس‌های سیستم اجرا شده باشند، نه لزوماً تا زمانی که مقداردهی اولیه آن‌ها کاملاً تمام شود یا دیسک بیکار گردد\&. .PP \fBمثال\ \&۱.\ \&نمایش مدت‌زمان راه‌اندازی (بوت)\fR .sp .if n \{\ .RS 4 .\} .nf # in a container $ systemd\-analyze time Startup finished in 296ms (userspace) multi\-user\&.target reached after 275ms in userspace # on a real machine $ systemd\-analyze time Startup finished in 2\&.584s (kernel) + 19\&.176s (initrd) + 47\&.847s (userspace) = 1min 9\&.608s multi\-user\&.target reached after 47\&.820s in userspace .fi .if n \{\ .RE .\} .SS "systemd\-analyze blame" .PP این دستور فهرستی از تمام واحدهای در حال اجرا را که بر اساس مدت‌زمان صرف‌شده برای مقداردهی اولیه مرتب شده‌اند، چاپ می‌کند\&. از این اطلاعات می‌توان برای بهینه‌سازی زمان‌های راه‌اندازی سیستم استفاده کرد\&. توجه داشته باشید که خروجی ممکن است گمراه‌کننده باشد، زیرا مقداردهی اولیه یک سرویس ممکن است صرفاً به این دلیل کند باشد که منتظر تکمیل مقداردهی اولیه سرویس دیگری است\&. همچنین توجه کنید: \fBsystemd\-analyze blame\fR نتایج را برای سرویس‌های دارای \fIType=simple\fR نمایش نمی‌دهد، زیرا systemd این سرویس‌ها را بلافاصله شروع‌شده در نظر می‌گیرد و بنابراین سنجش تأخیرهای مقداردهی اولیه امکان‌پذیر نیست\&. همچنین دقت کنید که این دستور فقط زمانی را نشان می‌دهد که واحدها برای راه‌اندازی صرف کرده‌اند، و مدت‌زمانی را که وظایف (jobs) واحد در صف اجرا سپری کرده‌اند نشان نمی‌دهد\&. به‌ویژه زمانی را نشان می‌دهد که واحدها در وضعیت "activating" سپری کرده‌اند، وضعیتی که برای واحدهایی مانند واحدهای دستگاه (device units) که مستقیماً از "inactive" به "active" تغییر وضعیت می‌دهند تعریف نشده است\&. از این رو، این دستور تصویری از عملکرد کد برنامه ارائه می‌دهد، اما نمی‌تواند تأخیر ناشی از انتظار برای سخت‌افزار و رویدادهای مشابه را به‌دقت منعکس کند\&. .PP \fBمثال\ \&۲.\ \&نمایش واحدهایی که بیشترین زمان را در طول بوت صرف کرده‌اند\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze blame 32\&.875s pmlogger\&.service 20\&.905s systemd\-networkd\-wait\-online\&.service 13\&.299s dev\-vda1\&.device \&.\&.\&. 23ms sysroot\&.mount 11ms initrd\-udevadm\-cleanup\-db\&.service 3ms sys\-kernel\-config\&.mount .fi .if n \{\ .RE .\} .SS "systemd\-analyze critical\-chain [\fIUNIT\fR\&.\&.\&.]" .PP این دستور درختی از زنجیره زمانی بحرانی واحدها را چاپ می‌کند (برای هر یک از \fIUNIT\fRهای مشخص‌شده یا در غیر این صورت برای هدف پیش‌فرض)\&. زمان پس از فعال شدن یا شروع واحد بعد از نویسه "@" چاپ می‌شود\&. مدت‌زمانی که واحد برای شروع صرف می‌کند بعد از نویسه "+" چاپ می‌شود\&. توجه داشته باشید که خروجی ممکن است به دلیل وابستگی مقداردهی اولیه سرویس‌ها به فعال‌سازی سوکت و همچنین اجرای موازی واحدها گمراه‌کننده باشد\&. همچنین، مشابه دستور \fBblame\fR، این دستور نیز تنها زمان سپری‌شده واحدها در وضعیت "activating" را در نظر می‌گیرد، و بنابراین واحدهایی را که هرگز از وضعیت "activating" عبور نکرده‌اند (مانند واحدهای دستگاه که مستقیماً از "inactive" به "active" منتقل می‌شوند) پوشش نمی‌دهد\&. علاوه بر این، اطلاعاتی درباره وظایف (و به‌ویژه وظایفی که با پایان مهلت زمانی مواجه شده‌اند) ارائه نمی‌دهد\&. .PP \fBمثال\ \&۳.\ \&دستور systemd\-analyze critical\-chain\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze critical\-chain multi\-user\&.target @47\&.820s └─pmie\&.service @35\&.968s +548ms └─pmcd\&.service @33\&.715s +2\&.247s └─network\-online\&.target @33\&.712s └─systemd\-networkd\-wait\-online\&.service @12\&.804s +20\&.905s └─systemd\-networkd\&.service @11\&.109s +1\&.690s └─systemd\-udevd\&.service @9\&.201s +1\&.904s └─systemd\-tmpfiles\-setup\-dev\&.service @7\&.306s +1\&.776s └─kmod\-static\-nodes\&.service @6\&.976s +177ms └─systemd\-journald\&.socket └─system\&.slice └─\-\&.slice .fi .if n \{\ .RE .\} .SS "systemd\-analyze dump [\fIpattern\fR\&...]" .PP بدون هیچ پارامتری، این دستور یک سریال‌سازی خوانا برای انسان (معمولاً بسیار طولانی) از وضعیت کامل مدیر سرویس را خروجی می‌دهد\&. می‌توان یک الگوی glob اختیاری مشخص کرد تا خروجی به واحدهایی که نام آن‌ها با یکی از الگوها مطابقت دارد محدود شود\&. قالب خروجی بدون اطلاع قبلی قابل تغییر است و نباید توسط برنامه‌ها تجزیه شود\&. این دستور برای کاربران عادی (غیرریشه) دارای محدودیت نرخ فراخوانی است\&. .PP \fBمثال\ \&۴.\ \&نمایش وضعیت داخلی مدیر کاربر\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze \-\-user dump Timestamp userspace: Thu 2019\-03\-14 23:28:07 CET Timestamp finish: Thu 2019\-03\-14 23:28:07 CET Timestamp generators\-start: Thu 2019\-03\-14 23:28:07 CET Timestamp generators\-finish: Thu 2019\-03\-14 23:28:07 CET Timestamp units\-load\-start: Thu 2019\-03\-14 23:28:07 CET Timestamp units\-load\-finish: Thu 2019\-03\-14 23:28:07 CET \-> Unit proc\-timer_list\&.mount: Description: /proc/timer_list \&.\&.\&. \-> Unit default\&.target: Description: Main user target \&.\&.\&. .fi .if n \{\ .RE .\} .SS "systemd\-analyze malloc [\fID\-Bus service\fR\&...]" .PP از این دستور می‌توان برای درخواست خروجی وضعیت حافظه داخلی (همان‌طور که توسط \fBmalloc_info\fR(3) برگردانده می‌شود) یک سرویس D\-Bus استفاده کرد\&. اگر سرویسی مشخص نشود، پرس‌وجو به org\&.freedesktop\&.systemd1 (مدیر سرویس سیستم یا کاربر) ارسال خواهد شد\&. پایداری قالب خروجی تضمین نمی‌شود و نباید توسط برنامه‌ها تجزیه شود\&. .PP سرویس باید رابط org\&.freedesktop\&.MemoryAllocation1 را پیاده‌سازی کرده باشد\&. در مجموعه systemd، در حال حاضر این رابط تنها توسط مدیر پیاده‌سازی شده است\&. .SS "systemd\-analyze plot" .PP این دستور یا یک گرافیک SVG چاپ می‌کند که جزئیات سرویس‌های سیستم را با زمان شروع آن‌ها و برجسته‌سازی زمان صرف‌شده برای مقداردهی اولیه نشان می‌دهد، یا داده‌های خام زمانی را در قالب JSON یا جدول نمایش می‌دهد\&. .PP \fBمثال\ \&۵.\ \&رسم نمودار زمان‌بندی راه‌اندازی (bootchart)\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze plot >bootup\&.svg $ eog bootup\&.svg& .fi .if n \{\ .RE .\} .PP توجه داشته باشید که این نمودار بر اساس تازه‌ترین داده‌های زمان‌بندی به ازای هر واحد از واحدهای بارگذاری‌شده است\&. این بدان معناست که اگر واحدی شروع شود، سپس متوقف گردد و دوباره شروع شود، اطلاعات نمایش‌داده‌شده تازه‌ترین چرخه شروع را پوشش می‌دهد، نه اولین چرخه را\&. بنابراین توصیه می‌شود این اطلاعات تنها کمی پس از بوت بررسی شود تا این تمایز تأثیری نداشته باشد\&. علاوه بر این، واحدهایی که توسط هیچ واحد دیگری از طریق یک وابستگی ارجاع داده نشده‌اند، ممکن است پس از خاتمه (در صورتی که با شکست مواجه نشده باشند) توسط مدیر سرویس از حافظه تخلیه شوند\&. چنین واحدهایی در نمودار نشان داده نخواهند شد\&. .SS "systemd\-analyze dot [\fIpattern\fR\&.\&.\&.]" .PP این دستور توصیف متنی گراف وابستگی را در قالب dot برای پردازش بیشتر با ابزار GraphViz \fBdot\fR(1) تولید می‌کند\&. برای ایجاد یک درخت گرافیکی از وابستگی‌ها از خط فرمانی مانند \fBsystemd\-analyze dot | dot \-Tsvg >systemd\&.svg\fR استفاده کنید\&. مگر اینکه \fB\-\-order\fR یا \fB\-\-require\fR ارسال شود، گراف تولیدشده هم وابستگی‌های ترتیبی و هم وابستگی‌های نیازمندی را نشان می‌دهد\&. مشخصات اختیاری با سبک الگوی تطبیق (مانند *\&.target) می‌تواند در انتها داده شود\&. اگر هر یک از این الگوها با گره مبدأ یا مقصد مطابقت داشته باشد، وابستگی واحد در گراف گنجانده می‌شود\&. .PP \fBمثال\ \&۶.\ \&رسم تمام وابستگی‌های هر واحدی که نام آن با "avahi\-daemon" شروع می‌شود\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze dot \*(Aqavahi\-daemon\&.*\*(Aq | dot \-Tsvg >avahi\&.svg $ eog avahi\&.svg .fi .if n \{\ .RE .\} .PP \fBمثال\ \&۷.\ \&رسم وابستگی‌های میان تمام واحدهای هدف شناخته‌شده\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze dot \-\-to\-pattern=\*(Aq*\&.target\*(Aq \-\-from\-pattern=\*(Aq*\&.target\*(Aq \e | dot \-Tsvg >targets\&.svg $ eog targets\&.svg .fi .if n \{\ .RE .\} .SS "systemd\-analyze unit\-paths" .PP این دستور فهرستی از تمام دایرکتوری‌هایی را چاپ می‌کند که فایل‌های واحد، بازنویسی‌های \&.d و پیوندهای نمادین \&.wants و \&.requires ممکن است از آن‌ها بارگذاری شوند\&. این دستور را با \fB\-\-user\fR ترکیب کنید تا فهرست مربوط به نمونه مدیر کاربر، و با \fB\-\-global\fR برای دریافت پیکربندی سراسری نمونه‌های مدیر کاربر بازیابی شود\&. .PP \fBمثال\ \&۸.\ \&نمایش تمام مسیرها برای واحدهای تولیدشده\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze unit\-paths | grep \*(Aq^/run\*(Aq /run/systemd/system\&.control /run/systemd/transient /run/systemd/generator\&.early /run/systemd/system /run/systemd/system\&.attached /run/systemd/generator /run/systemd/generator\&.late .fi .if n \{\ .RE .\} .PP توجه داشته باشید که این دستور فهرستی را چاپ می‌کند که درون خود \fBsystemd\-analyze\fR کامپایل شده است و با مدیر در حال اجرا ارتباط برقرار نمی‌کند\&. برای دریافت فهرست واقعی که مدیر استفاده می‌کند (با حذف دایرکتوری‌های خالی) از دستور زیر استفاده کنید: .sp .if n \{\ .RS 4 .\} .nf systemctl [\-\-user] [\-\-global] show \-p UnitPath \-\-value .fi .if n \{\ .RE .\} .SS "systemd\-analyze exit\-status [\fISTATUS\fR\&.\&.\&.]" .PP این دستور فهرستی از وضعیت‌های خروج را به همراه «کلاس» آن‌ها، یعنی منبع تعریف (یکی از "libc"، "systemd"، "LSB"، یا "BSD") چاپ می‌کند؛ بخش کدهای خروج فرایند در \fBsystemd.exec\fR(5) را ببینید\&. اگر هیچ آرگومان اضافی مشخص نشود، تمام وضعیت‌های شناخته‌شده نشان داده می‌شوند\&. در غیر این صورت، تنها تعاریف کدهای مشخص‌شده نمایش داده خواهند شد\&. .PP \fBمثال\ \&۹.\ \&نمایش چند نمونه از نام‌های وضعیت خروج\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze exit\-status 0 1 {63\&.\&.65} NAME STATUS CLASS SUCCESS 0 libc FAILURE 1 libc \- 63 \- USAGE 64 BSD DATAERR 65 BSD .fi .if n \{\ .RE .\} .SS "systemd\-analyze capability [\fICAPABILITY\fR... | {\-m\ |\ \-\-mask}\ \fIMASK\fR]" .PP این دستور فهرستی از قابلیت‌های لینوکس را به همراه شناسه‌های عددی آن‌ها چاپ می‌کند\&. برای جزئیات به \fBcapabilities\fR(7) مراجعه فرمایید\&. اگر هیچ آرگومانی مشخص نشود، فهرست کامل قابلیت‌های شناخته‌شده برای مدیر سرویس و هسته نشان داده می‌شود\&. قابلیت‌هایی که توسط هسته تعریف شده‌اند اما برای مدیر سرویس شناخته‌شده نیستند به‌صورت "cap_???" نمایش داده می‌شوند\&. در صورت تمایل، اگر آرگومان‌هایی مشخص شوند می‌توانند به قابلیت‌های خاصی بر اساس نام یا شناسه عددی اشاره کنند، که در این حالت تنها قابلیت‌های مشخص‌شده در جدول نمایش داده می‌شوند\&. .PP همچنین اگر \fB\-\-mask\fR ارسال شود، باید یک آرگومان عددی واحد مشخص شود که به عنوان یک ماسک قابلیت هگزادسیمال تفسیر می‌شود\&. در این حالت، تنها قابلیت‌های موجود در ماسک در جدول نشان داده خواهند شد\&. این حالت برای کمک به رمزگشایی مجموعه‌های قابلیت موجود از طریق رابط‌های عیب‌یابی گوناگون (مانند "/proc/PID/status") طراحی شده است\&. .PP \fBمثال\ \&۱۰.\ \&نمایش چند نمونه از نام‌های قابلیت‌ها\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze capability 0 1 {30\&.\&.32} NAME NUMBER cap_chown 0 cap_dac_override 1 cap_audit_control 30 cap_setfcap 31 cap_mac_override 32 .fi .if n \{\ .RE .\} .PP \fBمثال\ \&۱۱.\ \&رمزگشایی یک ماسک قابلیت استخراج‌شده از proc/\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze capability \-m 0000000000003c00 NAME NUMBER cap_net_bind_service 10 cap_net_broadcast 11 cap_net_admin 12 cap_net_raw 13 .fi .if n \{\ .RE .\} .SS "systemd\-analyze condition \fICONDITION\fR\&.\&.\&." .PP این دستور انتساب‌های \fICondition*=\&.\&.\&.\fR و \fIAssert*=\&.\&.\&.\fR را ارزیابی کرده و مقادیر آن‌ها و مقدار نهایی حاصل از مجموعه شرایط ترکیبی را چاپ می‌کند\&. برای فهرستی از شرایط و ادعاهای موجود به \fBsystemd.unit\fR(5) مراجعه کنید\&. .PP \fBمثال\ \&۱۲.\ \&ارزیابی شرایطی که نسخه‌های هسته را بررسی می‌کنند\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze condition \*(AqConditionKernelVersion = ! <4\&.0\*(Aq \e \*(AqConditionKernelVersion = >=5\&.1\*(Aq \e \*(AqConditionACPower=|false\*(Aq \e \*(AqConditionArchitecture=|!arm\*(Aq \e \*(AqAssertPathExists=/etc/os\-release\*(Aq test\&.service: AssertPathExists=/etc/os\-release succeeded\&. Asserts succeeded\&. test\&.service: ConditionArchitecture=|!arm succeeded\&. test\&.service: ConditionACPower=|false failed\&. test\&.service: ConditionKernelVersion=>=5\&.1 succeeded\&. test\&.service: ConditionKernelVersion=!<4\&.0 succeeded\&. Conditions succeeded\&. .fi .if n \{\ .RE .\} .SS "systemd\-analyze syscall\-filter [\fISET\fR\&.\&.\&.]" .PP این دستور فراخوانی‌های سیستمی موجود در مجموعه سیستم‌کال مشخص‌شده \fISET\fR، یا در صورت عدم تعیین، تمام مجموعه‌های شناخته‌شده را فهرست می‌کند\&. آرگومان \fISET\fR باید شامل پیشوند "@" باشد\&. .SS "systemd\-analyze filesystems [\fISET\fR\&.\&.\&.]" .PP این دستور سیستم‌های فایل موجود در مجموعه سیستم فایل مشخص‌شده \fISET\fR، یا در صورت عدم تعیین، تمام مجموعه‌های شناخته‌شده را فهرست می‌کند\&. آرگومان \fISET\fR باید شامل پیشوند "@" باشد\&. .SS "systemd\-analyze calendar \fIEXPRESSION\fR\&.\&.\&." .PP این دستور رویدادهای زمانی تکرارشونده تقویم را تجزیه و استانداردسازی (نرمال‌سازی) کرده و زمان سررسید بعدی آن‌ها را محاسبه می‌کند\&. این دستور همان ورودی تنظیم \fIOnCalendar=\fR در \fBsystemd.timer\fR(5) را بر اساس نحو توصیف‌شده در \fBsystemd.time\fR(7) دریافت می‌کند\&. به‌طور پیش‌فرض، تنها سررسید بعدی عبارت تقویمی نشان داده می‌شود؛ از \fB\-\-iterations=\fR برای نمایش تعداد دفعات سررسید مشخص‌شده بعدی عبارت استفاده کنید\&. هر بار سررسید عبارت یک برچسب زمانی تشکیل می‌دهد، دستور فرعی \fBtimestamp\fR را در زیر ببینید\&. .PP \fBمثال\ \&۱۳.\ \&نمایش روزهای کبیسه در آینده نزدیک\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze calendar \-\-iterations=5 \*(Aq*\-2\-29 0:0:0\*(Aq Original form: *\-2\-29 0:0:0 Normalized form: *\-02\-29 00:00:00 Next elapse: Sat 2020\-02\-29 00:00:00 UTC From now: 11 months 15 days left Iter\&. #2: Thu 2024\-02\-29 00:00:00 UTC From now: 4 years 11 months left Iter\&. #3: Tue 2028\-02\-29 00:00:00 UTC From now: 8 years 11 months left Iter\&. #4: Sun 2032\-02\-29 00:00:00 UTC From now: 12 years 11 months left Iter\&. #5: Fri 2036\-02\-29 00:00:00 UTC From now: 16 years 11 months left .fi .if n \{\ .RE .\} .SS "systemd\-analyze timestamp \fITIMESTAMP\fR\&.\&.\&." .PP این دستور یک برچسب زمانی (یعنی یک نقطه منفرد در زمان) را تجزیه کرده و شکل استانداردشده و اختلاف میان این برچسب زمانی و زمان حال را خروجی می‌دهد\&. برچسب زمانی باید با نحو مستندشده در \fBsystemd.time\fR(7)، بخش "PARSING TIMESTAMPS" مطابقت داشته باشد\&. .PP \fBمثال\ \&۱۴.\ \&نمایش تجزیه برچسب‌های زمانی\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze timestamp yesterday now tomorrow Original form: yesterday Normalized form: Mon 2019\-05\-20 00:00:00 CEST (in UTC): Sun 2019\-05\-19 22:00:00 UTC UNIX seconds: @15583032000 From now: 1 day 9h ago Original form: now Normalized form: Tue 2019\-05\-21 09:48:39 CEST (in UTC): Tue 2019\-05\-21 07:48:39 UTC UNIX seconds: @1558424919\&.659757 From now: 43us ago Original form: tomorrow Normalized form: Wed 2019\-05\-22 00:00:00 CEST (in UTC): Tue 2019\-05\-21 22:00:00 UTC UNIX seconds: @15584760000 From now: 14h left .fi .if n \{\ .RE .\} .SS "systemd\-analyze timespan \fIEXPRESSION\fR\&.\&.\&." .PP این دستور یک بازه زمانی (یعنی اختلاف بین دو برچسب زمانی) را تجزیه کرده و شکل استانداردشده و مقدار معادل آن را برحسب میکروثانیه خروجی می‌دهد\&. بازه زمانی باید از نحو مستندشده در \fBsystemd.time\fR(7)، بخش "PARSING TIME SPANS" پیروی کند\&. مقادیر بدون واحد به عنوان ثانیه در نظر گرفته می‌شوند\&. .PP \fBمثال\ \&۱۵.\ \&نمایش تجزیه بازه‌های زمانی\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze timespan 1s 300s \*(Aq1year 0\&.000001s\*(Aq Original: 1s μs: 1000000 Human: 1s Original: 300s μs: 300000000 Human: 5min Original: 1year 0\&.000001s μs: 31557600000001 Human: 1y 1us .fi .if n \{\ .RE .\} .SS "systemd\-analyze cat\-config \fINAME\fR|\fIPATH\fR\&.\&.\&." .PP این دستور مشابه \fBsystemctl cat\fR است، اما روی فایل‌های پیکربندی عمل می‌کند\&. این دستور محتوای یک فایل پیکربندی و هرگونه فایل drop\-in را با استفاده از مجموعه دایرکتوری‌ها و قوانین اولویت معمول systemd به خروجی استاندارد کپی می‌کند\&. هر آرگومان باید یک مسیر مطلق شامل پیشوند (مانند /etc/systemd/logind\&.conf یا /usr/lib/systemd/logind\&.conf) یا یک نام نسبی نسبت به پیشوند (مانند systemd/logind\&.conf) باشد\&. .PP \fBمثال\ \&۱۶.\ \&نمایش پیکربندی logind\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze cat\-config systemd/logind\&.conf # /etc/systemd/logind\&.conf \&.\&.\&. [Login] NAutoVTs=8 \&.\&.\&. # /usr/lib/systemd/logind\&.conf\&.d/20\-test\&.conf \&.\&.\&. some override from another package # /etc/systemd/logind\&.conf\&.d/50\-override\&.conf \&.\&.\&. some administrator override .fi .if n \{\ .RE .\} .SS "systemd\-analyze compare\-versions \fIVERSION1\fR [\fIOP\fR] \fIVERSION2\fR" .PP این دستور بسته به اینکه عملگر \fIOP\fR مشخص شده باشد یا خیر، دو حالت عملکرد متمایز دارد\&. .PP در حالت اول \(em زمانی که \fIOP\fR مشخص نشده است \(em دو رشته نسخه را با یکدیگر مقایسه کرده و بسته به مورد، یکی از عبارت‌های "\fIVERSION1\fR < \fIVERSION2\fR"، یا "\fIVERSION1\fR == \fIVERSION2\fR"، یا "\fIVERSION1\fR > \fIVERSION2\fR" را چاپ می‌کند\&. .PP وضعیت خروج در صورتی که نسخه‌ها برابر باشند برابر \fB0\fR، اگر نسخه سمت راست کوچک‌تر باشد برابر \fB11\fR، و اگر نسخه سمت چپ کوچک‌تر باشد برابر \fB12\fR خواهد بود\&. (این منطبق بر قراردادی است که توسط \fBrpmdev\-vercmp\fR استفاده می‌شود\&.) .PP در حالت دوم \(em زمانی که \fIOP\fR مشخص شده است \(em دو رشته نسخه را با استفاده از عملگر \fIOP\fR مقایسه کرده و در صورت برآورده شدن شرط، مقدار \fB0\fR (موفقیت) و در غیر این صورت مقدار \fB1\fR (شکست) را بازمی‌گرداند\&. \fBOP\fR می‌تواند یکی از مقادیر \fBlt\fR، \fBle\fR، \fBeq\fR، \fBne\fR، \fBge\fR، \fBgt\fR باشد\&. در این حالت، هیچ خروجی چاپ نمی‌شود\&. (این رفتار منطبق بر قراردادی است که توسط گزینه \fB\-\-compare\-versions\fR در \fBdpkg\fR(1) استفاده می‌شود\&.) .PP \fBمثال\ \&۱۷.\ \&مقایسه نسخه‌های یک بسته\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze compare\-versions systemd\-250~rc1\&.fc36\&.aarch64 systemd\-251\&.fc36\&.aarch64 systemd\-250~rc1\&.fc36\&.aarch64 < systemd\-251\&.fc36\&.aarch64 $ echo $? 12 $ systemd\-analyze compare\-versions 1 lt 2; echo $? 0 $ systemd\-analyze compare\-versions 1 ge 2; echo $? 1 .fi .if n \{\ .RE .\} .SS "systemd\-analyze verify \fIFILE\fR\&.\&.\&." .PP این دستور فایل‌های واحد را بارگذاری کرده و در صورت شناسایی هرگونه خطا، هشدارهایی را چاپ می‌کند\&. علاوه بر فایل‌های مشخص‌شده در خط فرمان، سایر واحدهای ارجاع‌شده توسط آن‌ها نیز بارگذاری خواهند شد\&. نام یک واحد روی دیسک را می‌توان با مشخص کردن یک نام مستعار پس از دونقطه بازنویسی کرد؛ برای نمونه مثال زیر را ببینید\&. مسیر کامل جستجوی واحد با ترکیب دایرکتوری‌های تمام آرگومان‌های خط فرمان و مسیرهای معمول بارگذاری واحد تشکیل می‌شود\&. متغیر \fI$SYSTEMD_UNIT_PATH\fR پشتیبانی می‌شود و می‌توان از آن برای جایگزینی یا افزودن به مجموعه مسیرهای کامپایل‌شده بارگذاری واحد استفاده کرد؛ به \fBsystemd.unit\fR(5) مراجعه فرمایید\&. تمام فایل‌های واحدهای موجود در دایرکتوری‌های حاوی آرگومان‌های خط فرمان با اولویت نسبت به سایر مسیرها استفاده خواهند شد\&. اگر یک واحد قالب بدون نام نمونه (مانند foo@\&.service) مشخص شود، "test_instance" به عنوان نام نمونه استفاده خواهد شد که می‌توان آن را با گزینه \fB\-\-instance=\fR کنترل نمود\&. .PP خطاهای زیر در حال حاضر شناسایی می‌شوند: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} بخش‌ها و دستورالعمل‌های ناشناخته، .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} وابستگی‌های مفقودی که برای شروع واحد داده‌شده لازم هستند، .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} صفحات راهنمای ذکرشده در \fIDocumentation=\fR که در سیستم یافت نمی‌شوند، .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} دستورات ذکرشده در \fIExecStart=\fR و موارد مشابه که در سیستم یافت نمی‌شوند یا قابل اجرا نیستند\&. .RE .PP \fBمثال\ \&۱۸.\ \&دستورالعمل‌های دارای املای نادرست\fR .sp .if n \{\ .RS 4 .\} .nf $ cat \&./user\&.slice [Unit] WhatIsThis=11 Documentation=man:nosuchfile(1) Requires=different\&.service [Service] Description=x $ systemd\-analyze verify \&./user\&.slice [\&./user\&.slice:9] Unknown lvalue \*(AqWhatIsThis\*(Aq in section \*(AqUnit\*(Aq [\&./user\&.slice:13] Unknown section \*(AqService\*(Aq\&. Ignoring\&. Error: org\&.freedesktop\&.systemd1\&.LoadFailed: Unit different\&.service failed to load: No such file or directory\&. Failed to create user\&.slice/start: Invalid argument user\&.slice: man nosuchfile(1) command failed with code 16 .fi .if n \{\ .RE .\} .PP \fBمثال\ \&۱۹.\ \&واحدهای سرویس مفقود\fR .sp .if n \{\ .RS 4 .\} .nf $ tail \&./a\&.socket \&./b\&.socket ==> \&./a\&.socket <== [Socket] ListenStream=100 ==> \&./b\&.socket <== [Socket] ListenStream=100 Accept=yes $ systemd\-analyze verify \&./a\&.socket \&./b\&.socket Service a\&.service not loaded, a\&.socket cannot be started\&. Service b@0\&.service not loaded, b\&.socket cannot be started\&. .fi .if n \{\ .RE .\} .PP \fBمثال\ \&۲۰.\ \&تعیین نام مستعار برای یک واحد\fR .sp .if n \{\ .RS 4 .\} .nf $ cat /tmp/source [Unit] Description=Hostname printer [Service] Type=simple ExecStart=/usr/bin/echo %H MysteryKey=true $ systemd\-analyze verify /tmp/source Failed to prepare filename /tmp/source: Invalid argument $ systemd\-analyze verify /tmp/source:alias\&.service alias\&.service:7: Unknown key name \*(AqMysteryKey\*(Aq in section \*(AqService\*(Aq, ignoring\&. .fi .if n \{\ .RE .\} .SS "systemd\-analyze security [\fIUNIT\fR\&.\&.\&.]" .PP این دستور تنظیمات امنیتی و ایزوله‌سازی (sandboxing) یک یا چند واحد سرویس مشخص‌شده را تحلیل می‌کند\&. اگر دست‌کم یک نام واحد مشخص شود، تنظیمات امنیتی واحدهای سرویس مشخص بازرسی شده و تحلیلی با جزئیات کامل نمایش داده می‌شود\&. اگر هیچ نام واحدی مشخص نشود، تمام واحدهای سرویس طولانی‌مدت که در حال حاضر بارگذاری شده‌اند بازرسی شده و جدولی خلاصه همراه با نتایج نمایش داده می‌شود\&. این دستور تنظیمات مختلف سرویس را که با امنیت مرتبط هستند بررسی کرده و بسته به اهمیت هر تنظیم، یک مقدار عددی به عنوان «سطح مواجهه» (exposure level) به آن اختصاص می‌دهد\&. سپس یک سطح مواجهه کلی برای کل واحد محاسبه می‌کند که تخمینی در بازه ۰\&.۰ تا ۱۰\&.۰ است و نشان می‌دهد یک سرویس از منظر امنیتی چقدر در معرض آسیب‌پذیری قرار دارد\&. سطوح مواجهه بالا نشان‌دهنده ایزوله‌سازی بسیار اندک است\&. سطوح مواجهه پایین نشان‌دهنده ایزوله‌سازی سخت‌گیرانه و بالاترین محدودیت‌های امنیتی است\&. توجه داشته باشید که این دستور تنها قابلیت‌های امنیتی مربوط به هر سرویس را که خود systemd پیاده‌سازی می‌کند تحلیل می‌نماید\&. این بدان معناست که هیچ سازوکار امنیتی اضافی اعمال‌شده توسط خود کد سرویس لحاظ نمی‌شود\&. سطح مواجهه تعیین‌شده نباید نادرست برداشت شود: سطح مواجهه بالا نه به این معناست که هیچ ایزوله‌سازی مؤثری توسط خود کد سرویس اعمال نشده است، و نه به این معناست که سرویس لزوماً در برابر حملات محلی یا از راه دور آسیب‌پذیر است\&. با این وجود، سطوح مواجهه بالا نشان می‌دهند که به احتمال زیاد سرویس می‌تواند از تنظیمات امنیتی تکمیلی بهره‌مند شود\&. .PP لطفاً توجه داشته باشید که بسیاری از تنظیمات امنیتی و ایزوله‌سازی به‌تنهایی قابل دور زدن هستند \(em مگر اینکه با موارد دیگر ترکیب شوند\&. به عنوان مثال، اگر یک سرویس امتیاز ایجاد یا لغو نقاط اتصال (mount points) را حفظ کند، بسیاری از گزینه‌های ایزوله‌سازی می‌توانند توسط خود کد سرویس خنثی شوند\&. به همین دلیل بسیار حائز اهمیت است که هر سرویس از جامع‌ترین و سخت‌گیرانه‌ترین تنظیمات ایزوله‌سازی و امنیتی ممکن استفاده کند\&. این ابزار برخی از این ترکیبات و روابط میان تنظیمات را در نظر می‌گیرد، اما نه همه آن‌ها را\&. همچنین دقت کنید تنظیمات امنیتی و ایزوله‌سازی که در اینجا تحلیل می‌شوند، تنها بر عملیاتی اعمال می‌گردند که توسط خود کد سرویس اجرا می‌شوند\&. اگر سرویسی به یک سامانه ارتباط بین‌فرایندی (مانند D\-Bus) دسترسی داشته باشد، ممکن است عملیاتی را از سایر سرویس‌ها درخواست کند که مشمول همان محدودیت‌ها نیستند\&. بنابراین هرگونه تحلیل جامع امنیت و ایزوله‌سازی در صورتی که خط‌مشی دسترسی سامانه ارتباط بین‌فرایندی اعتبارسنجی نشود، ناقص خواهد بود\&. .PP \fBمثال\ \&۲۱.\ \&تحلیل systemd\-logind\&.service\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze security \-\-no\-pager systemd\-logind\&.service NAME DESCRIPTION EXPOSURE ✗ PrivateNetwork= Service has access to the host\*(Aqs network 0\&.5 ✗ User=/DynamicUser= Service runs as root user 0\&.4 ✗ DeviceAllow= Service has no device ACL 0\&.2 ✓ IPAddressDeny= Service blocks all IP address ranges \&.\&.\&. → Overall exposure level for systemd\-logind\&.service: 4\&.1 OK 🙂 .fi .if n \{\ .RE .\} .SS "systemd\-analyze inspect\-elf \fIFILE\fR\&.\&.\&." .PP این دستور فایل‌های مشخص‌شده را بارگذاری می‌کند و اگر آن‌ها اشیاء ELF (فایل‌های اجرایی، کتابخانه‌ها، فایل‌های core و غیره) باشند، فراداده‌های بسته‌بندی تعبیه‌شده را (در صورت وجود) تجزیه کرده و آن را در قالب جدول یا json چاپ می‌کند\&. برای اطلاعات بیشتر به مستندات \m[blue]\fBفراداده‌های بسته‌بندی (Packaging Metadata)\fR\m[]\&\s-2\u[1]\d\s+2 مراجعه فرمایید\&. .PP \fBمثال\ \&۲۲.\ \&چاپ اطلاعات مربوط به یک فایل core به صورت JSON\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze inspect\-elf core\&.service\&.1000\&.5e02422a5e98450a9d391060932204eb\&.11478\&.1683820256000000 { "elfType" : "coredump", "elfArchitecture" : "AMD x86\-64", \&.\&.\&. "packageMetadata" : { "systemd" : { "type" : "rpm", "name" : "systemd", "version" : "253", "release" : "8\&.fc38", "architecture" : "x86_64" } } } .fi .if n \{\ .RE .\} .SS "systemd\-analyze fdstore \fIUNIT\fR\&.\&.\&." .PP محتویات فعلی مخزن توصیف‌گر فایل واحد سرویس مشخص‌شده را فهرست می‌کند\&. این دستور نام‌ها، انواع inode، شماره‌های دستگاه، شماره‌های inode، مسیرها و حالت‌های باز بودن توصیف‌گرهای فایل باز را نشان می‌دهد\&. برای واحدهای مشخص‌شده باید \fIFileDescriptorStoreMax=\fR فعال باشد؛ برای جزئیات به \fBsystemd.service\fR(5) مراجعه کنید\&. .PP \fBمثال\ \&۲۳.\ \&خروجی جدول\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze fdstore systemd\-journald\&.service FDNAME TYPE DEVNO INODE RDEVNO PATH FLAGS stored sock 0:8 4218620 \- socket:[4218620] ro stored sock 0:8 4213198 \- socket:[4213198] ro stored sock 0:8 4213190 \- socket:[4213190] ro \&... .fi .if n \{\ .RE .\} .PP نکته: ستون "DEVNO" به شماره‌های اصلی/فرعی گره دستگاه پشتیبان سیستم فایلی که inode توصیف‌گر فایل روی آن قرار دارد اشاره دارد\&. ستون "RDEVNO" به شماره‌های اصلی/فرعی خود گره دستگاه در صورتی که توصیف‌گر فایل به آن ارجاع دهد اشاره می‌کند\&. با فیلدهای متناظر \fI\&.st_dev\fR و \fI\&.st_rdev\fR در \fBstruct stat\fR مقایسه فرمایید (برای جزئیات به \fBstat\fR(2) مراجعه کنید)\&. شماره‌های inode فهرست‌شده در ستون "INODE" روی سیستم فایل مشخص‌شده توسط "DEVNO" قرار دارند\&. .SS "systemd\-analyze image\-policy \fIPOLICY\fR\&..." .PP این دستور رشته خط‌مشی ایمیج مشخص‌شده را طبق \fBsystemd.image-policy\fR(7) تحلیل می‌کند\&. خط‌مشی استانداردسازی و ساده‌سازی می‌شود\&. برای هر شناسه پارتیشن تعریف‌شده فعلی (مطابق با \m[blue]\fBمشخصات پارتیشن‌های قابل کشف (Discoverable Partitions Specification)\fR\m[]\&\s-2\u[2]\d\s+2) اثر رشته خط‌مشی ایمیج به صورت جدولی نشان داده می‌شود\&. .PP \fBمثال\ \&۲۴.\ \&نمونه خروجی\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze image\-policy swap=encrypted:usr=read\-only\-on+verity:root=encrypted Analyzing policy: root=encrypted:usr=verity+read\-only\-on:swap=encrypted Long form: root=encrypted:usr=verity+read\-only\-on:swap=encrypted:=unused+absent PARTITION MODE READ\-ONLY GROWFS root encrypted \- \- usr verity yes \- home ignore \- \- srv ignore \- \- esp ignore \- \- xbootldr ignore \- \- swap encrypted \- \- root\-verity ignore \- \- usr\-verity unprotected yes \- root\-verity\-sig ignore \- \- usr\-verity\-sig ignore \- \- tmp ignore \- \- var ignore \- \- default ignore \- \- .fi .if n \{\ .RE .\} .SS "systemd\-analyze has\-tpm2" .PP گزارش می‌دهد که آیا سیستم به یک دستگاه TPM2 قابل استفاده مجهز است یا خیر\&. اگر یک دستگاه TPM2 کشف شود، پشتیبانی گردد و توسط سفت‌افزار، درایورهای هسته سیستم‌عامل و فضای کاربری (یعنی systemd) استفاده شود، مقدار "yes" را چاپ کرده و با کد خروج صفر خارج می‌شود\&. اگر چنین دستگاهی کشف/پشتیبانی/استفاده نشود، "no" را چاپ می‌کند\&. در غیر این صورت، "partial" را چاپ می‌نماید\&. در هر یک از این دو حالت اخیر با وضعیت خروج غیرصفر خارج می‌شود\&. همچنین پنج خط را نمایش می‌دهد که به‌طور جداگانه مشخص می‌کنند آیا سفت‌افزار، درایورها، سیستم، هسته و کتابخانه‌ها TPM2 را شناسایی/پشتیبانی/استفاده کرده‌اند یا خیر\&. در حال حاضر، کتابخانه‌های مورد نیاز عبارتند از: libtss2\-esys\&.so\&.0، libtss2\-rc\&.so\&.0، و libtss2\-mu\&.so\&.0\&. این نیازمندی ممکن است در نسخه‌های آینده تغییر کند\&. .PP توجه داشته باشید که این دستور تنها دستگاه‌های TPM 2\&.0 را بررسی می‌کند و TPM 1\&.2 را اصلاً در نظر نمی‌گیرد\&. .PP همراه با \fB\-\-quiet\fR برای جلوگیری از نمایش خروجی استفاده نمایید\&. .PP \fBمثال\ \&۲۵.\ \&نمونه خروجی\fR .sp .if n \{\ .RS 4 .\} .nf yes +firmware +driver +system +subsystem +libraries +libtss2\-esys\&.so\&.0 +libtss2\-rc\&.so\&.0 +libtss2\-mu\&.so\&.0 .fi .if n \{\ .RE .\} .PP اضافه‌شده در نسخه ۲۵۷\&. .SS "systemd\-analyze pcrs [\fIPCR\fR\&...]" .PP این دستور PCRهای شناخته‌شده TPM2 را به همراه نام‌های شناسایی و مقادیر فعلی آن‌ها نمایش می‌دهد\&. .PP \fBمثال\ \&۲۶.\ \&نمونه خروجی\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze pcrs NR NAME SHA256 0 platform\-code bcd2eb527108bbb1f5528409bcbe310aa9b74f687854cc5857605993f3d9eb11 1 platform\-config b60622856eb7ce52637b80f30a520e6e87c347daa679f3335f4f1a600681bb01 2 external\-code 1471262403e9a62f9c392941300b4807fbdb6f0bfdd50abfab752732087017dd 3 external\-config 3d458cfe55cc03ea1f443f1562beec8df51c75e14a9fcf9a7234a13f198e7969 4 boot\-loader\-code 939f7fa1458e1f7ce968874d908e524fc0debf890383d355e4ce347b7b78a95c 5 boot\-loader\-config 864c61c5ea5ecbdb6951e6cb6d9c1f4b4eac79772f7fe13b8bece569d83d3768 6 \- 3d458cfe55cc03ea1f443f1562beec8df51c75e14a9fcf9a7234a13f198e7969 7 secure\-boot\-policy 9c905bd9b9891bfb889b90a54c4b537b889cfa817c4389cc25754823a9443255 8 \- 0000000000000000000000000000000000000000000000000000000000000000 9 kernel\-initrd 9caa29b128113ef42aa53d421f03437be57211e5ebafc0fa8b5d4514ee37ff0c 10 ima 5ea9e3dab53eb6b483b6ec9e3b2c712bea66bca1b155637841216e0094387400 11 kernel\-boot 0000000000000000000000000000000000000000000000000000000000000000 12 kernel\-config 627ffa4b405e911902fe1f1a8b0164693b31acab04f805f15bccfe2209c7eace 13 sysexts 0000000000000000000000000000000000000000000000000000000000000000 14 shim\-policy 0000000000000000000000000000000000000000000000000000000000000000 15 system\-identity 0000000000000000000000000000000000000000000000000000000000000000 16 debug 0000000000000000000000000000000000000000000000000000000000000000 17 \- ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 18 \- ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 19 \- ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 20 \- ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 \- ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 22 \- ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 23 application\-support 0000000000000000000000000000000000000000000000000000000000000000 .fi .if n \{\ .RE .\} .SS "systemd\-analyze srk [>\fIFILE\fR]" .PP این دستور کلید ریشه ذخیره‌سازی (SRK) را از دستگاه TPM2 خوانده و آن را در قالب بسته‌بندی‌شده TPM2B_PUBLIC به خروجی استاندارد می‌نویسد\&. خروجی حاوی داده‌های غیرقابل چاپ است، بنابراین باید به یک فایل یا لوله (pipe) هدایت شود\&. .PP \fBمثال\ \&۲۷.\ \&ذخیره کلید ریشه ذخیره‌سازی در srk\&.tpm2b_public\fR .sp .if n \{\ .RS 4 .\} .nf systemd\-analyze srk >srk\&.tpm2b_public .fi .if n \{\ .RE .\} .SS "systemd\-analyze architectures [\fINAME\fR\&.\&.\&.]" .PP تمام معماری‌های شناخته‌شده CPU و اینکه کدام موارد بومی (native) هستند را فهرست می‌کند\&. نام‌های معماری فهرست‌شده مواردی هستند که \fIConditionArchitecture=\fR از آن‌ها پشتیبانی می‌کند؛ برای جزئیات به \fBsystemd.unit\fR(5) مراجعه نمایید\&. اگر نام‌های معماری مشخص شده باشند، تنها موارد مشخص‌شده فهرست می‌شوند\&. .PP \fBمثال\ \&۲۸.\ \&خروجی جدول\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze architectures NAME SUPPORT alpha foreign arc foreign arc\-be foreign arm foreign arm64 foreign \&... sparc foreign sparc64 foreign tilegx foreign x86 secondary x86\-64 native .fi .if n \{\ .RE .\} .SS "systemd\-analyze smbios11" .PP فهرستی از رشته‌های SMBIOS نوع ۱۱ ارسال‌شده به سیستم را نشان می‌دهد\&. همچنین به \fBsmbios-type-11\fR(7) مراجعه کنید\&. .PP \fBمثال\ \&۲۹.\ \&نمونه خروجی\fR .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze smbios11 io\&.systemd\&.stub\&.kernel\-cmdline\-extra=console=ttyS0 io\&.systemd\&.credential\&.binary:ssh\&.ephemeral\-authorized_keys\-all=c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSURGd20xbFp4WlRGclJteG9ZQlozOTYzcE1uYlJCaDMwM1MxVXhLSUM2NmYgbGVubmFydEB6ZXRhCg== io\&.systemd\&.credential:vmm\&.notify_socket=vsock\-stream:2:254570042 3 SMBIOS Type #11 strings passed\&. .fi .if n \{\ .RE .\} .PP اضافه‌شده در نسخه ۲۵۷\&. .SH "گزینه‌ها (OPTIONS)" .PP گزینه‌های زیر پشتیبانی می‌شوند: .PP \fB\-\-system\fR .RS 4 روی نمونه سیستمی systemd عمل می‌کند\&. این حالت پیش‌فرض ضمنی است\&. .sp اضافه‌شده در نسخه ۲۰۹\&. .RE .PP \fB\-\-user\fR .RS 4 روی نمونه کاربری systemd عمل می‌کند\&. .sp اضافه‌شده در نسخه ۱۸۶\&. .RE .PP \fB\-\-global\fR .RS 4 روی پیکربندی سراسری سیستم برای نمونه‌های کاربری systemd عمل می‌کند\&. .sp اضافه‌شده در نسخه ۲۳۸\&. .RE .PP \fB\-\-order\fR, \fB\-\-require\fR .RS 4 هنگامی که در ترکیب با دستور \fBdot\fR (در بالا ببینید) استفاده شود، مشخص می‌کند کدام وابستگی‌ها در گراف وابستگی نشان داده شوند\&. اگر \fB\-\-order\fR ارسال شود، تنها وابستگی‌های از نوع \fIAfter=\fR یا \fIBefore=\fR نشان داده می‌شوند\&. اگر \fB\-\-require\fR ارسال شود، تنها وابستگی‌های از نوع \fIRequires=\fR، \fIRequisite=\fR، \fIBindsTo=\fR، \fIWants=\fR، و \fIConflicts=\fR نشان داده خواهند شد\&. اگر هیچ‌کدام ارسال نشود، وابستگی‌های تمام این انواع نشان داده می‌شوند\&. .sp اضافه‌شده در نسخه ۱۹۸\&. .RE .PP \fB\-\-from\-pattern=\fR, \fB\-\-to\-pattern=\fR .RS 4 هنگامی که در ترکیب با دستور \fBdot\fR (در بالا ببینید) استفاده شود، مشخص می‌کند کدام رابطه‌ها در گراف وابستگی نشان داده شوند\&. هر دو گزینه به یک الگوی \fBglob\fR(7) به عنوان آرگومان نیاز دارند که به ترتیب با گره‌های سمت چپ و راست یک رابطه تطبیق داده می‌شود\&. .sp هر یک از این گزینه‌ها را می‌توان بیش از یک بار استفاده کرد که در این حالت نام واحد باید با یکی از مقادیر مطابقت داشته باشد\&. هنگامی که آزمون‌ها برای هر دو سمت رابطه وجود داشته باشند، یک رابطه برای نمایش داده شدن باید هر دو آزمون را با موفقیت پشت سر بگذارد\&. هنگامی که الگوها به صورت آرگومان‌های مکانی نیز مشخص شوند، باید دست‌کم با یکی از طرفین رابطه مطابقت داشته باشند\&. به عبارت دیگر، الگوهای مشخص‌شده با این دو گزینه فهرست یال‌های تطبیق‌یافته با آرگومان‌های مکانی (در صورت ارائه) را غربال می‌کنند و در غیر این صورت فهرست یال‌های نمایش‌داده‌شده را به‌طور کامل تعیین می‌نمایند\&. .sp اضافه‌شده در نسخه ۲۰۱\&. .RE .PP \fB\-\-fuzz=\fR\fB\fItimespan\fR\fR .RS 4 هنگامی که در ترکیب با دستور \fBcritical\-chain\fR (در بالا ببینید) استفاده شود، واحدهایی را که مقدار \fItimespan\fR زودتر از آخرین واحد در همان سطح به پایان رسیده‌اند نیز نشان می‌دهد\&. واحد \fItimespan\fR ثانیه است مگر اینکه با واحد دیگری مشخص شود، مانند "50ms"\&. .sp اضافه‌شده در نسخه ۲۰۳\&. .RE .PP \fB\-\-man=no\fR .RS 4 از فراخوانی \fBman\fR(1) برای اعتبارسنجی وجود صفحات راهنمای ذکرشده در \fIDocumentation=\fR صرف‌نظر می‌کند\&. .sp اضافه‌شده در نسخه ۲۳۵\&. .RE .PP \fB\-\-generators\fR .RS 4 مولدهای واحد (generators) را فراخوانی می‌کند؛ به \fBsystemd.generator\fR(7) مراجعه کنید\&. برخی مولدها به امتیازات ریشه نیاز دارند\&. اجرای دستور تحت کاربر عادی با فعال بودن مولدها عموماً به صدور چند هشدار می‌انجامد\&. .sp اضافه‌شده در نسخه ۲۳۵\&. .RE .PP \fB\-\-instance=NAME\fR .RS 4 یک نام نمونه جایگزین برای واحدهای قالب مشخص می‌کند\&. این نام زمانی استفاده می‌شود که یک یا چند واحد قالب بدون نام نمونه (مانند foo@\&.service) برای \fBsystemd\-analyze condition\fR همراه با \fB\-\-unit=\fR، \fBsystemd\-analyze security\fR، و \fBsystemd\-analyze verify\fR مشخص شوند\&. در صورت عدم تعیین، "test_instance" استفاده خواهد شد\&. .sp اضافه‌شده در نسخه ۲۵۷\&. .RE .PP \fB\-\-recursive\-errors=\fR\fB\fIMODE\fR\fR .RS 4 اعتبارسنجی واحدها و وابستگی‌های آن‌ها و همچنین خروج \fBsystemd\-analyze verify\fR با وضعیت خروج غیرصفر را کنترل می‌کند\&. با مقدار \fByes\fR، در صورت بروز هشدار هنگام اعتبارسنجی واحد مشخص‌شده یا هر یک از وابستگی‌های مرتبط با آن، وضعیت خروج فرایند غیرصفر خواهد بود\&. با مقدار \fBno\fR، تنها در صورت بروز هشدار هنگام اعتبارسنجی واحد مشخص‌شده، وضعیت خروج فرایند غیرصفر برگردانده می‌شود\&. با مقدار \fBone\fR، در صورت بروز هشدار هنگام اعتبارسنجی واحد مشخص‌شده یا وابستگی‌های بی‌واسطه آن، وضعیت خروج غیرصفر خواهد بود\&. اگر این گزینه مشخص نشود، بدون در نظر گرفتن بروز یا عدم بروز هشدار در حین اعتبارسنجی، وضعیت خروج صفر برگردانده می‌شود\&. .sp اضافه‌شده در نسخه ۲۵۰\&. .RE .PP \fB\-\-root=\fR\fB\fIPATH\fR\fR .RS 4 همراه با دستورات \fBcat\-config\fR، \fBverify\fR، \fBcondition\fR و \fBsecurity\fR هنگامی که با \fB\-\-offline=\fR استفاده شود، روی فایل‌های زیر مسیر ریشه مشخص‌شده \fIPATH\fR عمل می‌کند\&. .sp اضافه‌شده در نسخه ۲۳۹\&. .RE .PP \fB\-\-image=\fR\fB\fIPATH\fR\fR .RS 4 همراه با دستورات \fBcat\-config\fR، \fBverify\fR، \fBcondition\fR و \fBsecurity\fR هنگامی که با \fB\-\-offline=\fR استفاده شود، روی فایل‌های درون مسیر ایمیج مشخص‌شده \fIPATH\fR عمل می‌کند\&. .sp اضافه‌شده در نسخه ۲۵۰\&. .RE .PP \fB\-\-image\-policy=\fR\fB\fIpolicy\fR\fR .RS 4 یک رشته خط‌مشی ایمیج را به عنوان آرگومان می‌پذیرد، طبق \fBsystemd.image-policy\fR(7)\&. این خط‌مشی هنگام کار روی ایمیج دیسک مشخص‌شده از طریق \fB\-\-image=\fR (در بالا ببینید) اعمال می‌شود\&. در صورت عدم تعیین، مقدار پیش‌فرض خط‌مشی "*" است، یعنی تمام سیستم‌های فایل شناسایی‌شده در ایمیج استفاده می‌شوند\&. .RE .PP \fB\-\-offline=\fR\fB\fIBOOL\fR\fR .RS 4 همراه با دستور \fBsecurity\fR، یک بازبینی امنیتی آفلاین از فایل‌های واحد مشخص‌شده انجام می‌دهد؛ بدین معنا که بر خلاف دستور \fBsecurity\fR در حالت عادی، نیازی به اتکا بر PID 1 برای دریافت اطلاعات امنیتی فایل‌ها ندارد\&. بنابراین \fB\-\-offline=\fR می‌تواند همراه با \fB\-\-root=\fR و \fB\-\-image=\fR نیز استفاده شود\&. اگر سطح مواجهه کلی یک واحد بالاتر از مقدار تنظیم‌شده با \fB\-\-threshold=\fR باشد (مقدار پیش‌فرض ۱۰۰ است)، \fB\-\-offline=\fR یک خطا برمی‌گرداند\&. .sp اضافه‌شده در نسخه ۲۵۰\&. .RE .PP \fB\-\-profile=\fR\fB\fIPATH\fR\fR .RS 4 همراه با \fBsecurity\fR \fB\-\-offline=\fR، پروفایل پرتابل مشخص‌شده را هنگام ارزیابی تنظیمات واحد لحاظ می‌کند\&. پروفایل را می‌توان با نام ارسال کرد که در این حالت مکان‌های شناخته‌شده سیستمی جستجو می‌شوند، یا می‌تواند مسیر کامل به یک فایل drop\-in خاص باشد\&. .sp اضافه‌شده در نسخه ۲۵۰\&. .RE .PP \fB\-\-threshold=\fR\fB\fINUMBER\fR\fR .RS 4 همراه با دستور \fBsecurity\fR، به کاربر امکان می‌دهد یک مقدار سفارشی برای مقایسه سطح مواجهه کلی فایل‌های واحد مشخص‌شده با آن تعیین کند\&. اگر سطح مواجهه کلی یک واحد بیشتر از مقدار تعیین‌شده توسط کاربر باشد، \fBsecurity\fR یک خطا برمی‌گرداند\&. \fB\-\-threshold=\fR می‌تواند همراه با \fB\-\-offline=\fR نیز استفاده شود و مقدار پیش‌فرض آن ۱۰۰ است\&. .sp اضافه‌شده در نسخه ۲۵۰\&. .RE .PP \fB\-\-security\-policy=\fR\fB\fIPATH\fR\fR .RS 4 همراه با دستور \fBsecurity\fR، به کاربر اجازه می‌دهد مجموعه‌ای سفارشی از نیازمندی‌ها را در قالب یک فایل JSON تعریف کند تا فایل(های) واحد مشخص‌شده با آن مقایسه شده و سطح مواجهه کلی آن‌ها در برابر تهدیدات امنیتی تعیین گردد\&. .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .B جدول\ \&۱.\ \&شناسه‌های آزمون ارزیابی پذیرفته‌شده .TS allbox tab(:); lB. T{ Assessment Test Identifier T} .T& l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l. T{ UserOrDynamicUser T} T{ SupplementaryGroups T} T{ PrivateMounts T} T{ PrivateDevices T} T{ PrivateTmp T} T{ PrivateNetwork T} T{ PrivateUsers T} T{ ProtectControlGroups T} T{ ProtectKernelModules T} T{ ProtectKernelTunables T} T{ ProtectKernelLogs T} T{ ProtectClock T} T{ ProtectHome T} T{ ProtectHostname T} T{ ProtectSystem T} T{ RootDirectoryOrRootImage T} T{ LockPersonality T} T{ MemoryDenyWriteExecute T} T{ NoNewPrivileges T} T{ CapabilityBoundingSet_CAP_SYS_ADMIN T} T{ CapabilityBoundingSet_CAP_SET_UID_GID_PCAP T} T{ CapabilityBoundingSet_CAP_SYS_PTRACE T} T{ CapabilityBoundingSet_CAP_SYS_TIME T} T{ CapabilityBoundingSet_CAP_NET_ADMIN T} T{ CapabilityBoundingSet_CAP_SYS_RAWIO T} T{ CapabilityBoundingSet_CAP_SYS_MODULE T} T{ CapabilityBoundingSet_CAP_AUDIT T} T{ CapabilityBoundingSet_CAP_SYSLOG T} T{ CapabilityBoundingSet_CAP_SYS_NICE_RESOURCE T} T{ CapabilityBoundingSet_CAP_MKNOD T} T{ CapabilityBoundingSet_CAP_CHOWN_FSETID_SETFCAP T} T{ CapabilityBoundingSet_CAP_DAC_FOWNER_IPC_OWNER T} T{ CapabilityBoundingSet_CAP_KILL T} T{ CapabilityBoundingSet_CAP_NET_BIND_SERVICE_BROADCAST_RAW T} T{ CapabilityBoundingSet_CAP_SYS_BOOT T} T{ CapabilityBoundingSet_CAP_MAC T} T{ CapabilityBoundingSet_CAP_LINUX_IMMUTABLE T} T{ CapabilityBoundingSet_CAP_IPC_LOCK T} T{ CapabilityBoundingSet_CAP_SYS_CHROOT T} T{ CapabilityBoundingSet_CAP_BLOCK_SUSPEND T} T{ CapabilityBoundingSet_CAP_WAKE_ALARM T} T{ CapabilityBoundingSet_CAP_LEASE T} T{ CapabilityBoundingSet_CAP_SYS_TTY_CONFIG T} T{ CapabilityBoundingSet_CAP_BPF T} T{ UMask T} T{ KeyringMode T} T{ ProtectProc T} T{ ProcSubset T} T{ NotifyAccess T} T{ RemoveIPC T} T{ Delegate T} T{ RestrictRealtime T} T{ RestrictSUIDSGID T} T{ RestrictNamespaces_user T} T{ RestrictNamespaces_mnt T} T{ RestrictNamespaces_ipc T} T{ RestrictNamespaces_pid T} T{ RestrictNamespaces_cgroup T} T{ RestrictNamespaces_uts T} T{ RestrictNamespaces_net T} T{ RestrictAddressFamilies_AF_INET_INET6 T} T{ RestrictAddressFamilies_AF_UNIX T} T{ RestrictAddressFamilies_AF_NETLINK T} T{ RestrictAddressFamilies_AF_PACKET T} T{ RestrictAddressFamilies_OTHER T} T{ SystemCallArchitectures T} T{ SystemCallFilter_swap T} T{ SystemCallFilter_obsolete T} T{ SystemCallFilter_clock T} T{ SystemCallFilter_cpu_emulation T} T{ SystemCallFilter_debug T} T{ SystemCallFilter_mount T} T{ SystemCallFilter_module T} T{ SystemCallFilter_raw_io T} T{ SystemCallFilter_reboot T} T{ SystemCallFilter_privileged T} T{ SystemCallFilter_resources T} T{ IPAddressDeny T} T{ DeviceAllow T} T{ AmbientCapabilities T} .TE .sp 1 مثال «خط‌مشی JSON» را در زیر ببینید\&. .sp اضافه‌شده در نسخه ۲۵۰\&. .RE .PP \fB\-\-json=\fR\fB\fIMODE\fR\fR .RS 4 همراه با دستور \fBsecurity\fR، یک خروجی در قالب JSON از جدول تحلیل امنیتی تولید می‌کند\&. قالب خروجی یک آرایه JSON شامل اشیایی با فیلدهای زیر است: \fIset\fR که مشخص می‌کند آیا تنظیم فعال شده است یا خیر، \fIname\fR که نام مورد استفاده برای ارجاع به تنظیم است، \fIjson_field\fR که شناسه سازگار با JSON مربوط به تنظیم است، \fIdescription\fR که خلاصه‌ای از وضعیت تنظیم است، و \fIexposure\fR که عددی در محدوده ۰\&.۰ تا ۱۰\&.۰ است و مقدار بالاتر نشان‌دهنده تهدید امنیتی بزرگ‌تر است\&. نسخه JSON جدول در خروجی استاندارد چاپ می‌شود\&. \fIMODE\fR ارسال‌شده به این گزینه می‌تواند یکی از سه مقدار زیر باشد: \fBoff\fR که پیش‌فرض است، \fBpretty\fR و \fBshort\fR که به ترتیب نسخه آراسته یا کوتاه JSON جدول امنیتی را خروجی می‌دهند\&. همراه با دستور \fBplot\fR، یک خروجی در قالب JSON از داده‌های زمانی خام تولید می‌کند\&. قالب خروجی یک آرایه JSON شامل اشیایی با فیلدهای زیر است: \fIname\fR که نام واحد است، \fIactivated\fR که مدت‌زمان پس از راه‌اندازی است که سرویس فعال شد، \fIactivating\fR که مدت‌زمان پس از راه‌اندازی است که سرویس ابتدا شروع به فعال‌سازی کرد، \fItime\fR که مدت‌زمانی است که سرویس از شروع اولیه تا فعال شدن صرف کرد، \fIdeactivated\fR که مدت‌زمان پس از راه‌اندازی است که سرویس غیرفعال شد، \fIdeactivating\fR که مدت‌زمان پس از راه‌اندازی است که در ابتدا به سرویس دستور غیرفعال‌سازی داده شد\&. .sp اضافه‌شده در نسخه ۲۵۰\&. .RE .PP \fB\-\-iterations=\fR\fB\fINUMBER\fR\fR .RS 4 هنگامی که همراه با دستور \fBcalendar\fR استفاده شود، تعداد دفعات مشخص‌شده را که عبارت تقویمی در آینده سررسید خواهد شد نشان می‌دهد\&. پیش‌فرض ۱ است\&. .sp اضافه‌شده در نسخه ۲۴۲\&. .RE .PP \fB\-\-base\-time=\fR\fB\fITIMESTAMP\fR\fR .RS 4 هنگامی که همراه با دستور \fBcalendar\fR استفاده شود، تکرارهای بعدی را نسبت به نقطه زمانی مشخص‌شده نشان می‌دهد\&. در صورت عدم تعیین، مقدار پیش‌فرض زمان فعلی است\&. .sp اضافه‌شده در نسخه ۲۴۴\&. .RE .PP \fB\-\-unit=\fR\fB\fIUNIT\fR\fR .RS 4 هنگامی که همراه با دستور \fBcondition\fR استفاده شود، تمام انتساب‌های \fICondition*=\&.\&.\&.\fR و \fIAssert*=\&.\&.\&.\fR در فایل واحد مشخص‌شده را ارزیابی می‌کند\&. مسیر کامل جستجوی واحد با ترکیب دایرکتوری‌های واحد مشخص‌شده با مسیرهای معمول بارگذاری واحد تشکیل می‌شود\&. متغیر \fI$SYSTEMD_UNIT_PATH\fR پشتیبانی می‌شود و می‌توان از آن برای جایگزینی یا افزودن به مجموعه مسیرهای کامپایل‌شده بارگذاری واحد استفاده کرد؛ به \fBsystemd.unit\fR(5) مراجعه نمایید\&. تمام فایل‌های واحدهای موجود در دایرکتوری حاوی واحد مشخص‌شده با اولویت نسبت به سایر مسیرها استفاده خواهند شد\&. اگر یک واحد قالب بدون نام نمونه (مانند foo@\&.service) مشخص شود، "test_instance" به عنوان نام نمونه استفاده خواهد شد که می‌توان آن را با گزینه \fB\-\-instance=\fR کنترل کرد\&. .sp اضافه‌شده در نسخه ۲۵۰\&. .RE .PP \fB\-\-table\fR .RS 4 هنگامی که با دستور \fBplot\fR استفاده شود، داده‌های خام زمانی در قالب یک جدول خروجی داده می‌شوند\&. .sp اضافه‌شده در نسخه ۲۵۳\&. .RE .PP \fB\-\-no\-legend\fR .RS 4 هنگامی که با دستور \fBplot\fR در ترکیب با \fB\-\-table\fR یا \fB\-\-json=\fR استفاده شود، هیچ راهنما یا توضیحی در خروجی گنجانده نمی‌شود\&. .sp اضافه‌شده در نسخه ۲۵۳\&. .RE .PP \fB\-H\fR, \fB\-\-host=\fR .RS 4 عملیات را از راه دور اجرا می‌کند\&. برای اتصال، یک نام میزبان یا یک نام کاربری و نام میزبان جداشده با "@" را مشخص کنید\&. نام میزبان می‌تواند اختیاری با یک پورت که ssh روی آن گوش می‌دهد با جداکننده ":" و سپس نام یک کانتینر با جداکننده "/" همراه شود که مستقیماً به یک کانتینر خاص روی میزبان مشخص‌شده متصل می‌شود\&. این گزینه از SSH برای ارتباط با نمونه مدیر ماشین راه دور استفاده می‌کند\&. نام‌های کانتینر را می‌توان با \fBmachinectl \-H \fR\fB\fIHOST\fR\fR برشمرد\&. نشانی‌های IPv6 را درون براکت قرار دهید\&. .RE .PP \fB\-M\fR, \fB\-\-machine=\fR .RS 4 عملیات را روی یک کانتینر محلی اجرا می‌کند\&. نام یک کانتینر را برای اتصال مشخص کنید که می‌تواند به صورت اختیاری با یک نام کاربری برای اتصال و نویسه جداکننده "@" پیشوندگذاری شود\&. اگر رشته ویژه "\&.host" به جای نام کانتینر استفاده شود، اتصالی به سیستم محلی برقرار می‌شود (که برای اتصال به گذرگاه کاربری یک کاربر خاص مفید است: "\-\-user \-\-machine=lennart@\&.host")\&. اگر نحو "@" استفاده نشود، اتصال با دسترسی کاربر ریشه برقرار می‌شود\&. اگر نحو "@" استفاده شود، می‌توان سمت چپ یا راست را حذف کرد (اما نه هر دو را) که در این حالت نام کاربر محلی و "\&.host" به‌طور ضمنی لحاظ می‌شوند\&. .RE .PP \fB\-q\fR, \fB\-\-quiet\fR .RS 4 راهنماها و سایر خروجی‌های غیرضروری را متوقف می‌کند\&. .sp اضافه‌شده در نسخه ۲۵۰\&. .RE .PP \fB\-\-tldr\fR .RS 4 همراه با دستور \fBcat\-config\fR، تنها بخش‌های «مهم» فایل‌های پیکربندی را چاپ می‌کند و از توضیحات، خطوط خالی و هدر بخش‌هایی که تنها با توضیحات و خطوط خالی دنبال شده‌اند صرف‌نظر می‌نماید\&. .sp اضافه‌شده در نسخه ۲۵۵\&. .RE .PP \fB\-\-scale\-svg=\fR\fB\fIFACTOR\fR\fR .RS 4 هنگامی که همراه با دستور \fBplot\fR استفاده شود، محور افقی (x) نمودار را می‌توان با مقدار FACTOR کشید (پیش‌فرض: ۱\&.۰)\&. .sp اضافه‌شده در نسخه ۲۵۷\&. .RE .PP \fB\-\-detailed\fR .RS 4 هنگامی که همراه با دستور \fBplot\fR استفاده شود، جزئیات برچسب‌های زمانی فعال‌سازی در نمودار SVG قابل مشاهده خواهد بود\&. .sp اضافه‌شده در نسخه ۲۵۷\&. .RE .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 یک متن راهنمای کوتاه چاپ کرده و خارج می‌شود\&. .RE .PP \fB\-\-version\fR .RS 4 یک رشته نسخه کوتاه چاپ کرده و خارج می‌شود\&. .RE .PP \fB\-\-no\-pager\fR .RS 4 خروجی را به یک صفحه‌بند (pager) هدایت نمی‌کند\&. .RE .SH "کدهای خروج (EXIT STATUS)" .PP برای بیشتر دستورات، در صورت موفقیت \fB0\fR و در غیر این صورت یک کد خطای غیرصفر بازگردانده می‌شود\&. .PP برای دستور فرعی \fBcompare\-versions\fR، در حالت دو آرگومانی، اگر رشته نسخه دوم به ترتیب بزرگ‌تر از، مساوی با، یا کوچک‌تر از نسخه اول باشد، کدهای \fB12\fR، \fB0\fR، یا \fB11\fR بازگردانده می‌شوند\&. در حالت سه آرگومانی، اگر شرط به ترتیب برقرار یا برقرار نباشد، کدهای \fB0\fR یا \fB1\fR بازگردانده خواهند شد\&. .PP برای دستور فرعی \fBhas\-tpm2\fR، اگر یک دستگاه TPM2 کشف شود، پشتیبانی گردد و توسط سفت‌افزار، درایور و فضای کاربری (یعنی \fBsystemd\fR) استفاده شود، کد \fB0\fR بازگردانده می‌شود\&. در غیر این صورت، ترکیب منطقی OR از مقادیر \fB1\fR (در صورت عدم پشتیبانی سفت‌افزار)، \fB2\fR (در صورت عدم پشتیبانی درایور)، و \fB4\fR (در صورت عدم پشتیبانی فضای کاربری) بازگردانده خواهد شد\&. اگر هیچ‌گونه پشتیبانی از TPM2 در دسترس نباشد، مقدار \fB7\fR بازگردانده می‌شود\&. .SH "محیط (ENVIRONMENT)" .PP \fI$SYSTEMD_LOG_LEVEL\fR .RS 4 حداکثر سطح ثبت وقایع (لاگ) برای پیام‌های ارسالی (پیام‌هایی با سطح لاگ بالاتر، یعنی کم‌اهمیت‌تر، متوقف خواهند شد)\&. فهرستی از مقادیر جداشده با کاما را می‌پذیرد\&. یک مقدار می‌تواند یکی از موارد زیر (به ترتیب کاهش اهمیت) باشد: \fBemerg\fR، \fBalert\fR، \fBcrit\fR، \fBerr\fR، \fBwarning\fR، \fBnotice\fR، \fBinfo\fR، \fBdebug\fR، یا یک عدد صحیح در محدوده ۰ تا ۷\&. برای اطلاعات بیشتر به \fBsyslog\fR(3) مراجعه کنید\&. هر مقدار می‌تواند به صورت اختیاری با یکی از پیشوندهای \fBconsole\fR، \fBsyslog\fR، \fBkmsg\fR یا \fBjournal\fR به همراه یک علامت دونقطه برای تنظیم حداکثر سطح ثبت وقایع برای آن مقصد لاگ خاص همراه شود (به عنوان مثال \fBSYSTEMD_LOG_LEVEL=debug,console:info\fR مشخص می‌کند که لاگ در سطح debug ثبت شود، به جز هنگام ثبت در کنسول که باید در سطح info باشد)\&. توجه داشته باشید که حداکثر سطح لاگ سراسری نسبت به سطوح لاگ تعیین‌شده برای هر مقصد اولویت دارد\&. .RE .PP \fI$SYSTEMD_LOG_COLOR\fR .RS 4 یک مقدار بولی (boolean)\&. در صورت درست بودن (true)، پیام‌های نوشته‌شده در tty متناسب با اولویت رنگی خواهند شد\&. .sp این تنظیم تنها زمانی مفید است که پیام‌ها مستقیماً در ترمینال نوشته شوند، زیرا \fBjournalctl\fR(1) و سایر ابزارهایی که لاگ‌ها را نمایش می‌دهند پیام‌ها را خودشان بر اساس سطح لاگ رنگ‌آمیزی می‌کنند\&. .RE .PP \fI$SYSTEMD_LOG_TIME\fR .RS 4 یک مقدار بولی\&. در صورت فعال بودن، پیام‌های لاگ کنسول با یک برچسب زمانی پیشوندگذاری می‌شوند\&. .sp این تنظیم تنها زمانی سودمند است که پیام‌ها مستقیماً در ترمینال یا یک فایل نوشته شوند، زیرا \fBjournalctl\fR(1) و سایر ابزارهایی که لاگ‌ها را نمایش می‌دهند برچسب‌های زمانی را خودشان بر اساس فراداده‌های ورودی پیوست می‌کنند\&. .RE .PP \fI$SYSTEMD_LOG_LOCATION\fR .RS 4 یک مقدار بولی\&. در صورت فعال بودن، پیام‌ها با نام فایل و شماره خط در کد منبع که پیام از آنجا نشأت گرفته است پیشوندگذاری می‌شوند\&. .sp توجه داشته باشید که مکان لاگ اغلب به هر حال به عنوان فراداده به ورودی‌های ژورنال پیوست می‌شود\&. با این حال گنجاندن مستقیم آن در متن پیام می‌تواند هنگام عیب‌یابی برنامه‌ها بسیار کارآمد باشد\&. .RE .PP \fI$SYSTEMD_LOG_TID\fR .RS 4 یک مقدار بولی\&. در صورت فعال بودن، پیام‌ها با شناسه عددی نخ (TID) فعلی پیشوندگذاری می‌شوند\&. .sp توجه داشته باشید که این اطلاعات اغلب به هر حال به عنوان فراداده به ورودی‌های ژورنال پیوست می‌شود\&. با این حال گنجاندن مستقیم آن در متن پیام می‌تواند هنگام عیب‌یابی برنامه‌ها کارآمد باشد\&. .RE .PP \fI$SYSTEMD_LOG_TARGET\fR .RS 4 مقصد پیام‌های لاگ\&. یکی از مقادیر: \fBconsole\fR (ثبت در tty متصل)، \fBconsole\-prefixed\fR (ثبت در tty متصل اما با پیشوندهای کدگذاری‌کننده سطح لاگ و بخش سامانه، به \fBsyslog\fR(3) مراجعه کنید)، \fBkmsg\fR (ثبت در بافر لاگ حلقوی هسته)، \fBjournal\fR (ثبت در ژورنال)، \fBjournal\-or\-kmsg\fR (ثبت در ژورنال در صورت در دسترس بودن، و در غیر این صورت در kmsg)، \fBauto\fR (تعیین خودکار مقصد مناسب برای لاگ، که حالت پیش‌فرض است)، \fBnull\fR (غیرفعال کردن خروجی لاگ)\&. .RE .PP \fI$SYSTEMD_LOG_RATELIMIT_KMSG\fR .RS 4 آیا محدودیت نرخ ارسال برای kmsg اعمال شود یا خیر\&. یک مقدار بولی می‌پذیرد\&. مقدار پیش‌فرض "true" است\&. در صورت غیرفعال بودن، systemd پیام‌های نوشته‌شده در kmsg را محدود نمی‌کند\&. .RE .PP \fI$SYSTEMD_PAGER\fR, \fI$PAGER\fR .RS 4 صفحه‌بندی که هنگام عدم ارائه \fB\-\-no\-pager\fR استفاده می‌شود\&. در صورت تنظیم بودن، \fI$SYSTEMD_PAGER\fR استفاده می‌شود؛ در غیر این صورت \fI$PAGER\fR به کار می‌رود\&. اگر هیچ‌یک از \fI$SYSTEMD_PAGER\fR یا \fI$PAGER\fR تنظیم نشده باشند، مجموعه‌ای از پیاده‌سازی‌های شناخته‌شده صفحه‌بند به نوبت امتحان می‌شوند، از جمله \fBless\fR(1) و \fBmore\fR(1)، تا زمانی که یکی پیدا شود\&. اگر هیچ پیاده‌سازی صفحه‌بندی کشف نشود، صفحه‌بندی فراخوانی نخواهد شد\&. تنظیم این متغیرهای محیطی به یک رشته خالی یا مقدار "cat" معادل ارسال \fB\-\-no\-pager\fR است\&. .sp نکته: اگر \fI$SYSTEMD_PAGERSECURE\fR تنظیم نشده باشد، \fI$SYSTEMD_PAGER\fR و \fI$PAGER\fR تنها می‌توانند برای غیرفعال کردن صفحه‌بند (با "cat" یا "") استفاده شوند و در غیر این صورت نادیده گرفته می‌شوند\&. .RE .PP \fI$SYSTEMD_LESS\fR .RS 4 بازنویسی گزینه‌های ارسالی به \fBless\fR (به‌طور پیش‌فرض "FRSXMK")\&. .sp کاربران ممکن است به طور خاص مایل به تغییر دو گزینه باشند: .PP \fBK\fR .RS 4 این گزینه به صفحه‌بند دستور می‌دهد هنگام فشرده شدن کلیدهای Ctrl+C بلافاصله خارج شود\&. برای اینکه به \fBless\fR اجازه دهید خودش Ctrl+C را برای بازگشت به خط فرمان صفحه‌بند مدیریت کند، این گزینه را لغو کنید\&. .sp اگر مقدار \fI$SYSTEMD_LESS\fR شامل "K" نباشد و صفحه‌بند فراخوانی‌شده \fBless\fR باشد، Ctrl+C توسط برنامه اجرایی نادیده گرفته شده و باید توسط صفحه‌بند مدیریت شود\&. .RE .PP \fBX\fR .RS 4 این گزینه به صفحه‌بند دستور می‌دهد رشته‌های مقداردهی اولیه و بازنشانی termcap را به ترمینال ارسال نکند\&. این گزینه به‌طور پیش‌فرض تنظیم شده است تا خروجی دستور حتی پس از خروج از صفحه‌بند در ترمینال قابل مشاهده باقی بماند\&. با این وجود، این امر مانع از کارکرد برخی امکانات صفحه‌بند می‌شود؛ به‌ویژه خروجی صفحه‌بندی‌شده را نمی‌توان با ماوس پیمایش کرد\&. .RE .sp توجه داشته باشید که تنظیم متغیر محیطی معمولی \fI$LESS\fR هیچ اثری بر فراخوانی‌های \fBless\fR توسط ابزارهای systemd ندارد\&. .sp برای توضیحات بیشتر به \fBless\fR(1) مراجعه کنید\&. .RE .PP \fI$SYSTEMD_LESSCHARSET\fR .RS 4 مجموعه نویسه‌های ارسالی به \fBless\fR را بازنویسی می‌کند (به‌طور پیش‌فرض "utf\-8"، در صورتی که ترمینال فراخوان سازگار با UTF\-8 تشخیص داده شود)\&. .sp توجه داشته باشید که تنظیم متغیر محیطی معمولی \fI$LESSCHARSET\fR هیچ اثری بر فراخوانی‌های \fBless\fR توسط ابزارهای systemd ندارد\&. .RE .PP \fI$SYSTEMD_PAGERSECURE\fR .RS 4 دستورات رایج صفحه‌بند مانند \fBless\fR(1)، علاوه بر «صفحه‌بندی» یعنی پیمایش در خروجی، از باز کردن یا نوشتن در فایل‌های دیگر و اجرای دستورات دلخواه پوسته (شل) پشتیبانی می‌کنند\&. هنگامی که دستورات با اختیارات بالا اجرا می‌شوند، برای مثال تحت \fBsudo\fR(8) یا \fBpkexec\fR(1)، صفحه‌بند به یک مرز امنیتی تبدیل می‌شود\&. باید دقت شود که تنها برنامه‌هایی با عملکرد کاملاً محدود به عنوان صفحه‌بند استفاده شوند، و ویژگی‌های تعاملی ناخواسته مانند باز کردن یا ایجاد فایل‌های جدید یا آغاز زیرپردازش‌ها مجاز نباشند\&. «حالت امن» برای صفحه‌بند را می‌توان همان‌طور که در زیر توضیح داده شده فعال کرد، \fIدر صورتی که صفحه‌بند از آن پشتیبانی کند\fR (بیشتر صفحه‌بندها به شیوه‌ای نوشته نشده‌اند که این موضوع را لحاظ کنند)\&. توصیه می‌شود هنگام اجازه دادن به کاربران غیرقابل اعتماد برای اجرای دستورات با اختیارات بالا، یا «حالت امن» را صراحتاً فعال کنید یا با استفاده از \fB\-\-no\-pager\fR یا \fIPAGER=cat\fR صفحه‌بند را به طور کامل غیرفعال نمایید\&. .sp این گزینه یک آرگومان بولی می‌پذیرد\&. در صورت تنظیم روی true، «حالت امن» صفحه‌بند فعال می‌شود\&. در «حالت امن»، هنگام فراخوانی صفحه‌بند متغیر \fBLESSSECURE=1\fR تنظیم خواهد شد که به صفحه‌بند دستور می‌دهد دستوراتی را که فایل‌های جدید باز می‌کنند یا می‌سازند، یا زیرپردازش‌های جدید را آغاز می‌نمایند، غیرفعال کند\&. در حال حاضر تنها \fBless\fR(1) شناخته شده است که این متغیر را درک کرده و «حالت امن» را پیاده‌سازی می‌نماید\&. .sp در صورت تنظیم روی false، هیچ محدودیتی بر صفحه‌بند اعمال نمی‌شود\&. تنظیم \fISYSTEMD_PAGERSECURE=0\fR یا حذف نکردن آن از محیط به ارث رسیده ممکن است به کاربر اجازه اجرای دستورات دلخواه را بدهد\&. .sp هنگامی که \fI$SYSTEMD_PAGERSECURE\fR تنظیم نشده باشد، ابزارهای systemd تلاش می‌کنند به‌طور خودکار تشخیص دهند که آیا «حالت امن» باید فعال شود و آیا صفحه‌بند از آن پشتیبانی می‌کند یا خیر\&. اگر شناسه کاربری مؤثر (UID) با مالک نشست ورود یکسان نباشد (به \fBgeteuid\fR(2) و \fBsd_pid_get_owner_uid\fR(3) مراجعه کنید)، یا هنگام اجرا تحت \fBsudo\fR(8) یا ابزارهای مشابه (که متغیر \fI$SUDO_UID\fR تنظیم شده باشد \&\s-2\u[3]\d\s+2)، «حالت امن» فعال می‌شود\&. در این حالت‌ها، \fISYSTEMD_PAGERSECURE=1\fR تنظیم خواهد شد و صفحه‌بندهایی که اجرای «حالت امن» توسط آن‌ها شناخته نشده است اصلاً استفاده نخواهند شد\&. توجه داشته باشید که این تشخیص خودکار تنها متداول‌ترین سازوکارهای ارتقای اختیارات را پوشش می‌دهد و برای راحتی کار در نظر گرفته شده است\&. توصیه می‌شود صراحتاً \fI$SYSTEMD_PAGERSECURE\fR را تنظیم کنید یا صفحه‌بند را غیرفعال نمایید\&. .sp توجه داشته باشید که اگر قرار باشد متغیرهای \fI$SYSTEMD_PAGER\fR یا \fI$PAGER\fR رعایت شوند، به جز برای غیرفعال کردن صفحه‌بند، باید \fI$SYSTEMD_PAGERSECURE\fR نیز تنظیم شده باشد\&. .RE .PP \fI$SYSTEMD_COLORS\fR .RS 4 یک آرگومان بولی می‌پذیرد\&. هنگامی که درست (true) باشد، \fBsystemd\fR و ابزارهای وابسته از رنگ‌ها در خروجی خود استفاده می‌کنند، در غیر این صورت خروجی تک‌رنگ خواهد بود\&. علاوه بر این، این متغیر می‌تواند یکی از مقادیر ویژه زیر را بپذیرد: "16"، "256" تا استفاده از رنگ‌ها را به ترتیب به ۱۶ یا ۲۵۶ رنگ پایه ANSI محدود کند\&. این متغیر را می‌توان برای بازنویسی تصمیم‌گیری خودکار بر اساس \fI$TERM\fR و نوع اتصال کنسول تعیین نمود\&. .RE .PP \fI$SYSTEMD_URLIFY\fR .RS 4 مقدار باید یک بولی باشد\&. مشخص می‌کند آیا برای شبیه‌سازهای ترمینال پشتیبانی‌کننده، پیوندهای قابل کلیک در خروجی ایجاد شوند یا خیر\&. این متغیر می‌تواند برای لغو تصمیمی که \fBsystemd\fR بر اساس \fI$TERM\fR و سایر شرایط می‌گیرد مشخص شود\&. .RE .SH "مثال‌ها (EXAMPLES)" .PP \fBمثال\ \&۳۰.\ \&خط‌مشی JSON (JSON Policy)\fR .PP فایل JSON که به عنوان پارامتر مسیر به \fB\-\-security\-policy=\fR ارسال می‌شود، دارای یک شیء سطح بالای JSON است که کلیدهای آن شناسه‌های آزمون ارزیابی ذکرشده در بالا هستند\&. مقادیر موجود در فایل باید اشیاء JSON با یک یا چند مورد از فیلدهای زیر باشند: \fBdescription_na\fR (رشته)، \fBdescription_good\fR (رشته)، \fBdescription_bad\fR (رشته)، \fBweight\fR (عدد صحیح بدون علامت)، و \fBrange\fR (عدد صحیح بدون علامت)\&. اگر هر یک از این فیلدهای متناظر با یک شناسه خاص از فایل واحد در شیء JSON موجود نباشد، مقدار پیش‌فرض فیلد توکار متناظر با همان شناسه به عنوان مقدار پیش‌فرض برای تحلیل امنیتی استفاده می‌شود\&. فیلدهای وزن (weight) و دامنه (range) برای تعیین سطح مواجهه کلی فایل‌های واحد استفاده می‌شوند: به مقدار هر تنظیم یک امتیاز نامطلوب بودن (badness score) اختصاص داده می‌شود، که در وزن خط‌مشی ضرب شده و بر دامنه خط‌مشی تقسیم می‌شود تا میزان مواجهه کلی حاصل از آن تنظیم تعیین گردد\&. امتیاز نامطلوب بودن محاسبه‌شده در میان تمام تنظیمات موجود در فایل واحد جمع شده، در محدوده ۱ تا ۱۰۰ استانداردسازی می‌شود و برای تعیین سطح مواجهه کلی واحد به کار می‌رود\&. با دادن امکان تنظیم این فیلدها به کاربران، دستور فرعی \*(Aqsecurity\*(Aq به آن‌ها این حق انتخاب را می‌دهد که خود تصمیم بگیرند کدام شناسه‌ها اهمیت بیشتری دارند و در نتیجه باید تأثیر بیشتری بر سطح مواجهه داشته باشند\&. وزن "0" به این معناست که آن تنظیم بررسی نخواهد شد\&. .sp .if n \{\ .RS 4 .\} .nf { "PrivateDevices": { "description_good": "Service has no access to hardware devices", "description_bad": "Service potentially has access to hardware devices", "weight": 1000, "range": 1 }, "PrivateMounts": { "description_good": "Service cannot install system mounts", "description_bad": "Service may install system mounts", "weight": 1000, "range": 1 }, "PrivateNetwork": { "description_good": "Service has no access to the host\*(Aqs network", "description_bad": "Service has access to the host\*(Aqs network", "weight": 2500, "range": 1 }, "PrivateTmp": { "description_good": "Service has no access to other software\*(Aqs temporary files", "description_bad": "Service has access to other software\*(Aqs temporary files", "weight": 1000, "range": 1 }, "PrivateUsers": { "description_good": "Service does not have access to other users", "description_bad": "Service has access to other users", "weight": 1000, "range": 1 } } .fi .if n \{\ .RE .\} .SH "همچنین ببینید (SEE ALSO)" .PP \fBsystemd\fR(1), \fBsystemctl\fR(1) .SH "نکات (NOTES)" .IP " 1." 4 فراداده‌های بسته‌بندی (Packaging Metadata) .RS 4 \%https://systemd.io/COREDUMP_PACKAGE_METADATA/ .RE .IP " 2." 4 مشخصات پارتیشن‌های قابل کشف (Discoverable Partitions Specification) .RS 4 \%https://uapi-group.org/specifications/specs/discoverable_partitions_specification .RE .IP " 3." 4 توصیه می‌شود سایر ابزارها نیز متغیر \fI$SUDO_UID\fR را در صورت لزوم تنظیم و بررسی کرده و با آن به عنوان یک رابط مشترک رفتار نمایند\&.