| MACHINECTL(1) | machinectl | MACHINECTL(1) |
نام (NAME)
machinectl - کنترل و مدیریت ماشینهای مجازی و کانتینرهای سیستمدی
خلاصه دستور (SYNOPSIS)
machinectl [OPTIONS...] {COMMAND} [NAME...]
توضیحات (DESCRIPTION)
machinectl ممکن است برای بازرسی و کنترل وضعیت مدیر ثبت ماشینهای مجازی و کانتینرهای systemd(1) یعنی systemd-machined.service(8) استفاده شود.
machinectl ممکن است برای اجرای عملیات روی ماشینها و ایمیجها استفاده شود. ماشینها در این مفهوم نمونههای در حال اجرای موارد زیر در نظر گرفته میشوند:
ماشینها با نامهایی شناسایی میشوند که از همان قوانین نامهای میزبان یونیکس و DNS پیروی میکنند. برای جزئیات، بخشهای زیر را ببینید.
ماشینها از ایمیجهای دیسک یا فایلسیستم نمونهسازی میشوند که اغلب — اما نه لزوماً — نامی یکسان با ماشینهای در حال اجرا از روی آنها دارند. ایمیجها در این مفهوم ممکن است موارد زیر باشند:
ایمیجها میتوانند از طریق ابزار importctl(1) دانلود، وارد (import) و صادر (export) شوند.
دستورات (COMMANDS)
دستورات زیر پشتیبانی میشوند:
دستورات ماشین (Machine Commands)
list
افزوده شده در نگارش 206.
status NAME...
افزوده شده در نگارش 206.
show [NAME...]
افزوده شده در نگارش 206.
start NAME...
توجه داشته باشید که systemd-machined.service(8) با انواع دیگری از مدیران کانتینر و ماشین مجازی نیز تعامل دارد، و systemd-nspawn تنها یکی از پیادهسازیهای آن است. بیشتر دستورات موجود در machinectl میتوانند بر روی کانتینرها یا ماشینهای مجازی تحت کنترل سایر مدیران نیز استفاده شوند، نه فقط systemd-nspawn. راهاندازی ماشینهای مجازی و ایمیجهای کانتینر در آن مدیران نیازمند ابزارهای ویژه همان مدیر است.
برای راهاندازی تعاملی یک کانتینر در خط فرمان با دسترسی کامل به کنسول کانتینر، لطفاً systemd-nspawn را مستقیماً فراخوانی کنید. برای متوقف کردن یک کانتینر در حال اجرا از machinectl poweroff استفاده کنید.
افزوده شده در نگارش 219.
login [NAME]
این دستور یک اعلان ورود (login prompt) کامل روی کانتینر یا میزبان محلی باز میکند که سپس نام کاربری و گذرواژه را میپرسد. از shell (در ادامه را ببینید) یا systemd-run(1) همراه با سوییچ --machine= برای فراخوانی مستقیم یک دستور منفرد، چه به صورت تعاملی و چه در پسزمینه استفاده کنید.
افزوده شده در نگارش 209.
shell [[NAME@]NAME [PATH [ARGUMENTS...]]]
توجه داشته باشید که machinectl shell کد وضعیت/خروج فرآیند پوسته فراخوانیشده را بازنمیگرداند. در صورتی که به آن اطلاعات نیاز است، به جای آن از systemd-run استفاده کنید (در ادامه را ببینید).
استفاده از دستور shell بدون آرگومان (و در نتیجه فراخوانی پوسته یا دستور اجراشده روی میزبان محلی)، از بسیاری جهات مشابه یک نشست su(1) است، اما برخلاف su، نشست جدید را به طور کامل از نشست مبدأ ایزوله میکند، به گونهای که هیچ ویژگی فرآیند یا نشستی را به اشتراک نمیگذارد و در وضعیتی پاک و به خوبی تعریفشده قرار دارد. این نشست در نشستهای جدید utmp، ورود، حسابرسی (audit)، امنیت و دستهکلید (keyring) ردیابی میشود و در میان سایر ویژگیها، هیچ متغیر محیطی یا محدودیت منابعی را به ارث نخواهد برد.
توجه داشته باشید که systemd-run(1) همراه با سوییچ --machine= میتواند به جای دستور machinectl shell استفاده شود و امکان کار غیرتعاملی، پیکربندی دقیقتر و سطحپایینتر واحد فراخوانیشده، و همچنین دسترسی به اطلاعات زمان اجرا و کد خروج/وضعیت فرآیند پوسته فراخوانیشده را فراهم میکند. به ویژه، از سوییچ --wait در systemd-run برای انتقال اطلاعات وضعیت خروج فرآیند فراخوانیشده استفاده کنید. از سوییچ --pty در systemd-run برای به دست آوردن یک پوسته تعاملی، مشابه با machinectl shell استفاده کنید. به طور کلی، systemd-run برای اهداف اسکریپتنویسی ترجیح داده میشود. با این حال، توجه داشته باشید که systemd-run ممکن است به امتیازات و دسترسیهای بالاتری نسبت به machinectl shell نیاز داشته باشد.
افزوده شده در نگارش 225.
enable NAME..., disable NAME...
این دستور پس از اتمام عملیات، به طور ضمنی پیکربندی مدیر سیستم را مجدداً بارگذاری (reload) میکند. توجه داشته باشید که این دستور به صورت ضمنی کانتینرهایی را که روی آنها عملیات انجام میشود روشن یا خاموش نمیکند. اگر چنین رفتاری مورد نظر است، این دستور را با سوییچ --now ترکیب کنید.
افزوده شده در نگارش 219.
poweroff NAME...
افزوده شده در نگارش 212.
reboot NAME...
افزوده شده در نگارش 209.
pause NAME...
افزوده شده در نگارش 261.
resume NAME...
افزوده شده در نگارش 261.
terminate NAME...
افزوده شده در نگارش 206.
kill NAME...
افزوده شده در نگارش 206.
bind NAME PATH [PATH]
افزوده شده در نگارش 219.
bind-volume NAME SPEC
حجم پیوستشده با نام "PROVIDER:VOLUME" شناسایی میشود و میتواند در زمان اجرا از طریق unbind-volume جدا شود. در حال حاضر تنها برای ماشینهای systemd-vmspawn پشتیبانی میشود که یک سوکت کنترلی io.systemd.MachineInstance را ارائه میدهند.
افزوده شده در نگارش 261.
unbind-volume NAME STORAGE-NAME
افزوده شده در نگارش 261.
copy-to NAME PATH [PATH] --force
اگر میزبان و کانتینر فضای نام کاربری و گروهی یکسانی داشته باشند، مالکیت فایلها بر اساس شناسه عددی کاربر و شناسه گروه برای نسخه کپی حفظ میشود؛ در غیر این صورت، مالکیت تمام فایلها و دایرکتوریها در نسخه کپی متعلق به کاربر و گروه ریشه (UID/GID 0) خواهد بود.
افزوده شده در نگارش 219.
copy-from NAME PATH [PATH] --force
اگر میزبان و کانتینر فضای نام کاربری و گروهی یکسانی داشته باشند، مالکیت فایلها بر اساس شناسه عددی کاربر و شناسه گروه برای نسخه کپی حفظ میشود؛ در غیر این صورت، مالکیت تمام فایلها و دایرکتوریها در نسخه کپی متعلق به کاربر و گروه ریشه (UID/GID 0) خواهد بود.
افزوده شده در نگارش 219.
دستورات ایمیج (Image Commands)
list-images
افزوده شده در نگارش 219.
image-status [NAME...]
افزوده شده در نگارش 219.
show-image [NAME...]
افزوده شده در نگارش 219.
edit NAME|FILE
افزوده شده در نگارش 254.
cat NAME|FILE
افزوده شده در نگارش 254.
clone NAME NAME
توجه داشته باشید که این دستور نام میزبان، شناسه ماشین (machine ID) و تمام تنظیمات دیگری را که میتوانند نمونه را شناسایی کنند دستنخورده باقی میگذارد. بنابراین ایمیج اصلی و نسخه کلونشده این اطلاعات هویتی را به اشتراک خواهند داشت و ممکن است لازم باشد آنها را به صورت دستی در نسخه کپی تغییر دهید.
اگر با سوییچ --read-only ترکیب شود، یک ایمیج کلونشده فقطخواندنی ایجاد میگردد.
افزوده شده در نگارش 219.
rename NAME NAME
افزوده شده در نگارش 219.
read-only NAME [BOOL]
افزوده شده در نگارش 219.
remove NAME...
افزوده شده در نگارش 219.
set-limit [NAME] BYTES
توجه داشته باشید که محدودیت اندازه به ازای هر کانتینر تنها روی فایلسیستمهای btrfs پشتیبانی میشود.
افزوده شده در نگارش 220.
clean
هنگامی که با سوییچ --all ترکیب شود، تمام ایمیجها را حذف میکند، نه فقط موارد پنهان را. این دستور در عمل دایرکتوری /var/lib/machines/ را خالی میسازد.
توجه داشته باشید که دستوراتی مانند importctl pull-tar یا importctl pull-raw معمولاً ابتدا ایمیجهای ماشینی پنهان، فقطخواندنی و تغییرنیافته را از ایمیج دانلودشده ایجاد میکنند، پیش از آنکه یک نسخه کاری قابل نوشتن از آن را کلون کنند، تا در صورت استفاده چندباره از ایمیجها از دانلودهای تکراری جلوگیری شود. از machinectl clean برای حذف ایمیجهای قدیمی و پنهان ایجادشده به این روش استفاده کنید.
افزوده شده در نگارش 230.
گزینهها (OPTIONS)
گزینههای زیر پشتیبانی میشوند:
-p, --property=
افزوده شده در نگارش 206.
--value
افزوده شده در نگارش 230.
-P
افزوده شده در نگارش 256.
-a, --all
هنگام فهرست کردن ایمیجهای ماشین مجازی یا کانتینر، از پنهان کردن ایمیجهایی که با نویسه نقطه (".") شروع میشوند خودداری میکند.
هنگام پاکسازی ایمیجهای ماشین مجازی یا کانتینر، همه ایمیجها را حذف میکند، نه فقط موارد پنهان را.
افزوده شده در نگارش 206.
-l, --full
افزوده شده در نگارش 206.
--kill-whom=
افزوده شده در نگارش 206.
-s, --signal=
مقدار ویژه "help" فهرستی از مقادیر شناختهشده را نمایش داده و برنامه بلافاصله خارج میشود، و مقدار ویژه "list" مقادیر شناختهشده را همراه با شمارههای عددی سیگنال فهرست کرده و برنامه بلافاصله خارج میشود.
--uid=
افزوده شده در نگارش 225.
-E NAME[=VALUE], --setenv=NAME[=VALUE]
توجه داشته باشید که این گزینه برای دستور login پشتیبانی نمیشود.
افزوده شده در نگارش 230.
--mkdir
افزوده شده در نگارش 219.
--read-only
هنگام استفاده با clone یک ایمیج کانتینر یا ماشین مجازی فقطخواندنی ایجاد میشود.
افزوده شده در نگارش 219.
-n, --lines=
افزوده شده در نگارش 219.
-o, --output=
افزوده شده در نگارش 219.
--runner=nspawn|vmspawn
افزوده شده در نگارش 256.
-V
افزوده شده در نگارش 256.
--now
افزوده شده در نگارش 253.
--force
افزوده شده در نگارش 219.
--max-addresses=
افزوده شده در نگارش 232.
-q, --quiet
افزوده شده در نگارش 236.
-H, --host=
-M, --machine=
افزوده شده در نگارش 235.
--no-pager
--no-legend
--no-ask-password
-h, --help
--version
نامهای ماشین و ایمیج (MACHINE AND IMAGE NAMES)
ابزار machinectl روی ماشینها و ایمیجهایی کار میکند که نامهای آنها باید بر اساس قوانین سختگیرانهای انتخاب شوند. نامهای ماشین باید برای استفاده به عنوان نامهای میزبان بر اساس زیرمجموعه محافظهکارانهای از مفاهیم DNS و یونیکس/لینوکس مناسب باشند. به طور خاص، آنها باید از یک یا چند رشته برچسب غیرخالی تشکیل شده باشند که با نقطه از یکدیگر جدا میشوند. نقطههای ابتدایی یا انتهایی مجاز نیستند. توالی چند نقطه مجاز نیست. رشتههای برچسب تنها میتوانند شامل نویسههای الفبایی-عددی و همچنین خط تیره باشند. حداکثر طول نام ماشین 64 نویسه است.
یک ماشین ویژه با نام ".host" به خود سیستم میزبان در حال اجرا اشاره دارد. این برای اجرای عملیات یا بازرسی خود سیستم میزبان نیز مفید است. توجه داشته باشید که machinectl list این ماشین ویژه را نمایش نخواهد داد مگر اینکه سوییچ --all مشخص شده باشد.
الزامات مربوط به نامهای ایمیج سختگیری کمتری دارند، با این حال باید UTF-8 معتبر باشند، به عنوان نام فایل مناسب باشند (بنابراین نباید نقطه تکی یا جفتنقطه باشند، و نباید شامل اسلش باشند)، و نباید شامل نویسههای کنترلی باشند. از آنجا که بسیاری از عملیاتها به دنبال ایمیجی با نام ماشین درخواستشده میگردند، توصیه میشود که نام ایمیجها به همان شیوه سختگیرانه نامهای ماشین نامگذاری شوند.
یک ایمیج ویژه با نام ".host" به ایمیج سیستم میزبان در حال اجرا اشاره دارد. بنابراین از نظر مفهومی به نام ماشین ویژه ".host" توصیفشده در بالا نگاشت میشود. توجه داشته باشید که machinectl list-images نیز این ایمیج ویژه را نمایش نخواهد داد، مگر اینکه --all مشخص شده باشد.
فایلها و دایرکتوریها (FILES AND DIRECTORIES)
ایمیجهای ماشین ترجیحاً در /var/lib/machines/ ذخیره میشوند، اما در /usr/local/lib/machines/ و /usr/lib/machines/ نیز جستجو میشوند. به دلایل سازگاری، دایرکتوری /var/lib/container/ نیز جستجو میشود. توجه داشته باشید که ایمیجهای ذخیرهشده در زیر /usr/ همواره فقطخواندنی در نظر گرفته میشوند. امکان پیوند نمادین (symlink) دادن ایمیجهای ماشین از سایر دایرکتوریها به درون /var/lib/machines/ وجود دارد تا برای کنترل با machinectl در دسترس قرار گیرند.
توجه داشته باشید که برخی از عملیاتهای ایمیج تنها بر روی فایلسیستمهای btrfs پشتیبانی میشوند، کارآمد هستند یا به صورت اتمیک (اتمامپذیر و یکپارچه) انجام میپذیرند.
ایمیجهای دیسک توسط systemd-nspawn(1) و machinectl در سه قالب شناخته میشوند:
برای اطلاعات بیشتر در مورد قالبهای ایمیج، به ویژه گزینههای --directory= و --image= آن به systemd-nspawn(1) مراجعه کنید.
مثالها (EXAMPLES)
مثال 1. دانلود یک ایمیج خام RAW از اوبونتو، تنظیم گذرواژه ریشه در آن، و راهاندازی آن به عنوان یک سرویس
# importctl pull-raw -mN \
https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64-disk-kvm.img \
jammy
# systemd-firstboot --image=/var/lib/machines/jammy.raw --prompt-root-password --force
# machinectl start jammy
# machinectl login jammy
این دستور ایمیج مشخصشده .raw را دانلود کرده و آن را تحت نام محلی "jammy" در دسترس قرار میدهد. سپس، یک گذرواژه ریشه با systemd-firstboot(1) تنظیم میشود. پس از آن، ماشین به عنوان یک سرویس سیستمی راهاندازی میشود. با دستور آخر یک اعلان ورود به درون کانتینر درخواست میگردد.
وضعیت خروج (EXIT STATUS)
در صورت موفقیت 0 بازگردانده میشود، و در غیر این صورت یک کد خطای غیرصفر برگردانده خواهد شد.
محیط (ENVIRONMENT)
$SYSTEMD_LOG_LEVEL
$SYSTEMD_LOG_COLOR
این تنظیم تنها زمانی مفید است که پیامها مستقیماً در ترمینال نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که گزارشها را نمایش میدهند، خودشان پیامها را بر اساس سطح لاگ رنگآمیزی میکنند.
$SYSTEMD_LOG_TIME
این تنظیم تنها زمانی مفید است که پیامها مستقیماً در ترمینال یا یک فایل نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که گزارشها را نمایش میدهند، خودشان برچسبهای زمانی را بر اساس متادیتای ورودی پیوست میکنند.
$SYSTEMD_LOG_LOCATION
توجه داشته باشید که مکان گزارش اغلب به هر حال به عنوان متادیتا به ورودیهای ژورنال پیوست میشود. با این وجود، گنجاندن مستقیم آن در متن پیام میتواند هنگام دیباگ کردن برنامهها راحت باشد.
$SYSTEMD_LOG_TID
توجه داشته باشید که این اطلاعات به هر حال به عنوان متادیتا به ورودیهای ژورنال پیوست میشود. با این وجود، گنجاندن مستقیم آن در متن پیام میتواند هنگام دیباگ کردن برنامهها راحت باشد.
$SYSTEMD_LOG_TARGET
$SYSTEMD_LOG_RATELIMIT_KMSG
$SYSTEMD_PAGER, $PAGER
توجه: اگر $SYSTEMD_PAGERSECURE تنظیم نشده باشد، $SYSTEMD_PAGER و $PAGER تنها میتوانند برای غیرفعال کردن صفحهبند (با "cat" یا "") استفاده شوند، و در غیر این صورت نادیده گرفته میشوند.
$SYSTEMD_LESS
کاربران ممکن است بخواهند دو گزینه را به طور ویژه تغییر دهند:
K
اگر مقدار $SYSTEMD_LESS شامل "K" نباشد، و صفحهبندی که فراخوانی میشود less باشد، Ctrl+C توسط فایل اجرایی نادیده گرفته شده و باید توسط صفحهبند مدیریت شود.
X
توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESS هیچ تاثیری بر فراخوانیهای less توسط ابزارهای systemd ندارد.
برای توضیحات بیشتر به less(1) مراجعه کنید.
$SYSTEMD_LESSCHARSET
توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESSCHARSET هیچ تاثیری بر فراخوانیهای less توسط ابزارهای systemd ندارد.
$SYSTEMD_PAGERSECURE
این گزینه یک آرگومان بولی میگیرد. هنگامی که روی درست تنظیم شود، "حالت امن" صفحهبند فعال میشود. در "حالت امن"، LESSSECURE=1 هنگام فراخوانی صفحهبند تنظیم خواهد شد، که به صفحهبند دستور میدهد دستوراتی را که فایلهای جدید باز یا ایجاد میکنند یا زیرفرآیندهای جدید آغاز مینمایند غیرفعال کند. در حال حاضر تنها مشخص شده است که less(1) این متغیر را درک کرده و "حالت امن" را پیادهسازی میکند.
هنگامی که روی نادرست تنظیم شود، هیچ محدودیتی برای صفحهبند اعمال نمیشود. تنظیم SYSTEMD_PAGERSECURE=0 یا حذف نکردن آن از محیط به ارث رسیده ممکن است به کاربر اجازه دهد دستورات دلخواه را اجرا کند.
هنگامی که $SYSTEMD_PAGERSECURE تنظیم نشده باشد، ابزارهای systemd سعی میکنند به طور خودکار تشخیص دهند که آیا "حالت امن" باید فعال شود و آیا صفحهبند از آن پشتیبانی میکند یا خیر. اگر UID موثر همان مالک نشست ورود نباشد (به geteuid(2) و sd_pid_get_owner_uid(3) مراجعه کنید)، یا هنگام اجرا تحت sudo(8) یا ابزارهای مشابه ($SUDO_UID تنظیم شده باشد [1])، "حالت امن" فعال میشود. در این موارد، SYSTEMD_PAGERSECURE=1 تنظیم خواهد شد و صفحهبندهایی که مشخص نیست "حالت امن" را پیادهسازی میکنند اصلاً استفاده نخواهند شد. توجه داشته باشید که این تشخیص خودکار تنها رایجترین مکانیسمهای ارتقای دسترسی را پوشش میدهد و به عنوان یک تسهیل در نظر گرفته شده است. توصیه میشود صراحتاً $SYSTEMD_PAGERSECURE را تنظیم کرده یا صفحهبند را غیرفعال کنید.
توجه داشته باشید که اگر متغیرهای $SYSTEMD_PAGER یا $PAGER قرار است رعایت شوند، به غیر از غیرفعال کردن صفحهبند، $SYSTEMD_PAGERSECURE نیز باید تنظیم شده باشد.
$SYSTEMD_COLORS
true
false
"16", "256", "24bit"
"auto-16", "auto-256", "auto-24bit"
$SYSTEMD_URLIFY
همچنین ببینید (SEE ALSO)
systemd(1), systemd-machined.service(8), systemd-nspawn(1), systemd.special(7), importctl(1), tar(1), xz(1), gzip(1), bzip2(1), zstd(1)
نکات (NOTES)
- 1.
- توصیه میشود که سایر ابزارها $SUDO_UID را در صورت لزوم تنظیم و بررسی کنند، و با آن به عنوان یک رابط مشترک رفتار نمایند.
| systemd 261.2 |