LOCALECTL(1) localectl LOCALECTL(1)

localectl - کنترل تنظیمات محلی و پیکربندی صفحه‌کلید سیستم

localectl [گزینه‌ها...] {دستور}

از localectl می‌توان برای پرس‌وجو و تغییر تنظیمات محلی (locale) و پیکربندی صفحه‌کلید سیستم استفاده کرد. این ابزار با systemd-localed(8) ارتباط برقرار می‌کند تا فایل‌هایی مانند /etc/locale.conf و /etc/vconsole.conf را اصلاح کند.

تنظیمات محلی سیستم، تنظیمات زبان سرویس‌های سیستمی و رابط کاربری قبل از ورود کاربر (مانند مدیر نمایش)، و همچنین حالت پیش‌فرض برای کاربران پس از ورود به سیستم را کنترل می‌کند.

تنظیمات صفحه‌کلید، چیدمان صفحه‌کلید مورد استفاده در کنسول متنی و رابط کاربری گرافیکی قبل از ورود کاربر (مانند مدیر نمایش)، و همچنین حالت پیش‌فرض برای کاربران پس از ورود به سیستم را کنترل می‌کند.

توجه داشته باشید تغییراتی که با استفاده از این ابزار انجام می‌شوند ممکن است برای اعمال شدن در مراحل اولیه بوت سیستم نیازمند بازسازی initrd باشند. ساختار initrd به‌طور خودکار توسط localectl بازسازی نمی‌شود؛ این کار باید به‌صورت دستی انجام شود که معمولاً با نصب مجدد بسته هسته (کرنل) توزیع صورت می‌گیرد.

توجه داشته باشید که از systemd-firstboot(1) می‌توان برای مقداردهی اولیه تنظیمات محلی سیستم برای ایمیج‌های سیستمی مانت‌شده (اما بوت‌نشده) استفاده کرد.

دستورات زیر پشتیبانی می‌شوند:

status

تنظیمات فعلی مربوط به محلی سیستم و نگاشت صفحه‌کلید را نمایش می‌دهد. اگر هیچ دستوری مشخص نشود، این دستور به عنوان حالت پیش‌فرض ضمنی در نظر گرفته می‌شود.

در نسخه ۱۹۵ اضافه شد.

set-locale LOCALE، set-locale VARIABLE=LOCALE...

تنظیم محلی سیستم. این دستور یک لوکال مانند "en_US.UTF-8"، یا یک یا چند انتساب لوکال مانند "LANG=de_DE.utf8"، "LC_MESSAGES=en_GB.utf8" و غیره را دریافت می‌کند. اگر یک لوکال بدون نام متغیر ارائه شود، متغیر لوکال "LANG=" تنظیم خواهد شد. برای جزئیات در مورد تنظیمات موجود و معانی آن‌ها به locale(7) مراجعه کنید. برای مشاهده فهرست لوکال‌های موجود از list-locales استفاده کنید (به زیر مراجعه کنید).

در نسخه ۱۹۵ اضافه شد.

list-locales

فهرست کردن لوکال‌های موجود که برای پیکربندی با set-locale مفید هستند.

در نسخه ۱۹۵ اضافه شد.

set-keymap MAP [TOGGLEMAP]

تنظیم نگاشت صفحه‌کلید سیستم برای کنسول و X11. این دستور نام یک نگاشت (مانند «de» یا «us») و در صورت تمایل نام دومی را برای تعریف نگاشت تغییر وضعیت (toggle) صفحه‌کلید دریافت می‌کند. مگر اینکه گزینه --no-convert داده شده باشد، تنظیم انتخاب‌شده همچنین پس از تبدیل به نزدیک‌ترین نگاشت صفحه‌کلید منطبق در X11، به عنوان نگاشت پیش‌فرض صفحه‌کلید سیستم برای X11 نیز اعمال می‌شود. برای مشاهده فهرست نگاشت‌های موجود صفحه‌کلید از list-keymaps استفاده کنید (به زیر مراجعه کنید).

در نسخه ۱۹۵ اضافه شد.

list-keymaps

فهرست کردن نگاشت‌های صفحه‌کلید موجود برای کنسول، که برای پیکربندی با set-keymap مفید هستند.

در نسخه ۱۹۵ اضافه شد.

set-x11-keymap LAYOUT [MODEL [VARIANT [OPTIONS]]]

تنظیم نگاشت پیش‌فرض صفحه‌کلید سیستم برای X11 و کنسول مجازی. این دستور نام یک چیدمان صفحه‌کلید (مانند "de" یا "us")، و در صورت تمایل یک مدل (model)، گونه (variant) و گزینه‌ها (options) را دریافت می‌کند؛ برای جزئیات به kbd(4) مراجعه کنید. مگر اینکه گزینه --no-convert ارسال شده باشد، تنظیم انتخاب‌شده همچنین پس از تبدیل به نزدیک‌ترین نگاشت منطبق کنسول، به عنوان نگاشت صفحه‌کلید کنسول سیستم نیز اعمال می‌شود.

در نسخه ۱۹۵ اضافه شد.

list-x11-keymap-models، list-x11-keymap-layouts، list-x11-keymap-variants [LAYOUT]، list-x11-keymap-options

فهرست کردن مدل‌ها، چیدمان‌ها، گونه‌ها و گزینه‌های موجود نگاشت کلید در X11 که برای پیکربندی با set-keymap مفید هستند. دستور list-x11-keymap-variants می‌تواند به‌صورت اختیاری یک پارامتر layout دریافت کند تا خروجی را به گونه‌های مناسب برای آن چیدمان خاص محدود کند.

در نسخه ۲۰۱ اضافه شد.

گزینه‌های زیر پشتیبانی می‌شوند:

-l، --full

خروجی را کوتاه (بیضوی/ellipsize) نکن.

در نسخه ۲۵۷ اضافه شد.

--no-convert

اگر دستور set-keymap یا set-x11-keymap اجرا شود و این گزینه داده شده باشد، نگاشت کلید به ترتیب از کنسول به X11 یا از X11 به کنسول تبدیل نخواهد شد.

در نسخه ۱۹۵ اضافه شد.

-H، --host=

اجرای عملیات از راه دور. برای اتصال، نام میزبان (hostname) یا ترکیبی از نام کاربری و نام میزبان که با "@" از هم جدا شده‌اند را مشخص کنید. همچنین می‌توان به انتهای نام میزبان شماره درگاهی که SSH روی آن گوش می‌دهد را با علامت ":" و سپس نام کانتینر را با علامت "/" افزود که مستقیماً به یک کانتینر خاص در میزبان مشخص‌شده متصل می‌شود. این کار از SSH برای ارتباط با نمونه مدیر ماشین راه دور استفاده می‌کند. نام‌های کانتینرها را می‌توان با machinectl -H HOST مشاهده کرد. نشانی‌های IPv6 باید داخل قلاب (براکت) قرار گیرند.

-M، --machine=

اجرای عملیات روی یک کانتینر محلی. نام کانتینری که می‌خواهید به آن متصل شوید را مشخص کنید؛ به عنوان گزینه اختیاری می‌توان پیشوند نام کاربر همراه با نویسه جداکننده "@" را قبل از آن قرار داد. اگر رشته خاص ".host" به‌جای نام کانتینر استفاده شود، اتصال به سیستم محلی برقرار می‌شود (که برای اتصال به گذرگاه کاربری یک کاربر خاص مفید است: "--user --machine=lennart@.host"). اگر ساختار "@" استفاده نشود، اتصال با دسترسی کاربر ریشه (root) برقرار می‌شود. در صورت استفاده از ساختار "@" می‌توان سمت چپ یا راست آن را حذف کرد (اما نه هر دو را) که در این حالت نام کاربری محلی و ".host" به‌صورت ضمنی در نظر گرفته می‌شوند.

--no-ask-password

عدم درخواست گذرواژه از کاربر برای احراز هویت در عملیات دارای دسترسی ویژه.

-h، --help

چاپ یک متن راهنمای کوتاه و خروج.

--version

چاپ رشته کوتاه مربوط به نسخه برنامه و خروج.

--no-pager

عدم ارسال خروجی به صفحه‌بندی‌کننده (pager).

در صورت موفقیت، مقدار 0 و در غیر این صورت یک کد شکست غیرصفر بازگردانده می‌شود.

$SYSTEMD_LOG_LEVEL

حداکثر سطح ثبت وقایع (log level) برای پیام‌های ارسال‌شده (پیام‌هایی با سطح بالاتر، یعنی با اهمیت کمتر، پنهان خواهند شد). فهرستی از مقادیر جداشده با کاما را می‌پذیرد. یک مقدار می‌تواند یکی از موارد زیر (به ترتیب کاهش اهمیت) باشد: emerg، alert، crit، err، warning، notice، info، debug، یا یک عدد صحیح در بازه 0...7. برای اطلاعات بیشتر به syslog(3) مراجعه کنید. هر مقدار می‌تواند اختیاری با یکی از پیشوندهای console، syslog، kmsg یا journal به همراه یک دونقطه (:) مشخص شود تا حداکثر سطح لاگ برای آن مقصد خاص تعیین گردد (برای مثال SYSTEMD_LOG_LEVEL=debug,console:info مشخص می‌کند که لاگ‌ها در سطح debug ثبت شوند، مگر هنگام ثبت روی کنسول که باید در سطح info باشد). توجه داشته باشید که حداکثر سطح کلی لاگ بر سطوح جداگانه مقاصد اولویت دارد.

$SYSTEMD_LOG_COLOR

یک مقدار بولی. اگر true باشد، پیام‌های نوشته‌شده روی tty بر اساس اولویت رنگ‌آمیزی می‌شوند.

این تنظیم تنها زمانی کاربرد دارد که پیام‌ها مستقیماً روی ترمینال نوشته شوند، زیرا journalctl(1) و سایر ابزارهای نمایش گزارش‌ها، پیام‌ها را خودبه‌خود بر اساس سطح گزارش رنگی می‌کنند.

$SYSTEMD_LOG_TIME

یک مقدار بولی. اگر true باشد، پیام‌های ثبت کنسول با یک برچسب زمانی پیشوندگذاری می‌شوند.

این تنظیم تنها زمانی مفید است که پیام‌ها مستقیماً روی ترمینال یا در یک فایل نوشته شوند، زیرا journalctl(1) و سایر ابزارهای نمایش گزارش‌ها، برچسب‌های زمانی را بر اساس فراداده‌های مدخل به خودی خود الصاق می‌کنند.

$SYSTEMD_LOG_LOCATION

یک مقدار بولی. اگر true باشد، پیام‌ها با نام فایل و شماره خط در کد منبع که پیام از آن سرچشمه گرفته است پیشوندگذاری می‌شوند.

توجه داشته باشید که محل وقوع لاگ معمولاً به عنوان فراداده به مدخل‌های ژورنال ضمیمه می‌شود؛ با این حال، درج مستقیم آن در متن پیام می‌تواند هنگام عیب‌یابی برنامه‌ها سودمند باشد.

$SYSTEMD_LOG_TID

یک مقدار بولی. اگر true باشد، پیام‌ها با شناسه عددی ریسه فعلی (TID) پیشوندگذاری می‌شوند.

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

$SYSTEMD_LOG_TARGET

مقصد پیام‌های ثبت وقایع. یکی از موارد زیر: console (ثبت در tty متصل‌شده)، console-prefixed (ثبت در tty متصل اما همراه با پیشوندهایی شامل کد سطح لاگ و «facility»، به syslog(3) مراجعه کنید)، kmsg (ثبت در بافر حلقوی گزارش‌های کرنل)، journal (ثبت در ژورنال)، journal-or-kmsg (ثبت در ژورنال در صورت موجود بودن، وگرنه در kmsg)، auto (تشخیص خودکار مقصد مناسب گزارش‌گیری، حالت پیش‌فرض)، null (غیرفعال کردن خروجی ثبت وقایع).

$SYSTEMD_LOG_RATELIMIT_KMSG

آیا ارسال پیام‌ها به kmsg محدودسازی نرخ (rate limit) شود یا خیر. یک مقدار بولی می‌پذیرد. پیش‌فرض "true" است. در صورت غیرفعال شدن، systemd پیام‌های نوشته‌شده به kmsg را محدود نمی‌کند.

$SYSTEMD_PAGER، $PAGER

صفحه‌بندی‌کننده‌ای (pager) که در صورت عدم تعیین --no-pager استفاده می‌شود. در صورت تنظیم بودن، $SYSTEMD_PAGER استفاده می‌شود؛ در غیر این صورت $PAGER به کار می‌رود. اگر هیچ‌کدام از $SYSTEMD_PAGER یا $PAGER تنظیم نشده باشند، مجموعه‌ای از پیاده‌سازی‌های شناخته‌شده صفحه‌بندی‌کننده به نوبت امتحان می‌شوند، از جمله less(1) و more(1)، تا زمانی که یکی پیدا شود. اگر هیچ برنامه‌ای پیدا نشود، هیچ صفحه‌بندی‌کننده‌ای اجرا نمی‌شود. تنظیم این متغیرهای محیطی روی یک رشته خالی یا مقدار "cat" معادل ارسال گزینه --no-pager است.

نکته: اگر $SYSTEMD_PAGERSECURE تنظیم نشده باشد، $SYSTEMD_PAGER و $PAGER تنها برای غیرفعال کردن صفحه‌بندی‌کننده (با "cat" یا "") قابل استفاده هستند و در غیر این صورت نادیده گرفته می‌شوند.

$SYSTEMD_LESS

بازنویسی گزینه‌های ارسال‌شده به less (به‌طور پیش‌فرض "FRSXMK").

کاربران ممکن است بخواهند دو گزینه را به‌ویژه تغییر دهند:

K

این گزینه به صفحه‌بندی‌کننده دستور می‌دهد که به محض فشرده شدن کلیدهای Ctrl+C فوراً خارج شود. برای اینکه به less اجازه دهید خودش Ctrl+C را مدیریت کند و به خط فرمان صفحه‌بندی‌کننده بازگردد، این گزینه را بردارید.

اگر مقدار $SYSTEMD_LESS شامل "K" نباشد و صفحه‌بندی‌کننده اجراشده less باشد، کلیدهای Ctrl+C توسط فایل اجرایی نادیده گرفته شده و باید توسط خود صفحه‌بندی‌کننده مدیریت شود.

X

این گزینه به صفحه‌بندی‌کننده دستور می‌دهد که رشته‌های مقداردهی اولیه و پایانی termcap را به ترمینال ارسال نکند. این گزینه به‌طور پیش‌فرض تنظیم شده است تا خروجی دستور حتی پس از خروج از صفحه‌بندی‌کننده روی ترمینال قابل مشاهده بماند. با این حال، این کار مانع از عملکرد برخی ویژگی‌های صفحه‌بندی‌کننده می‌شود، به ویژه اینکه خروجی صفحه‌بندی‌شده را نمی‌توان با ماوس پیمایش (اسکرول) کرد.

توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESS هیچ تأثیری بر فراخوانی‌های less توسط ابزارهای systemd ندارد.

برای بررسی بیشتر به less(1) مراجعه کنید.

$SYSTEMD_LESSCHARSET

بازنویسی مجموعه نویسه‌های ارسال‌شده به less (به‌طور پیش‌فرض "utf-8"، اگر مشخص شود ترمینال فراخوان با UTF-8 سازگار است).

توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESSCHARSET هیچ تأثیری بر فراخوانی‌های less توسط ابزارهای systemd ندارد.

$SYSTEMD_PAGERSECURE

دستورات صفحه‌بندی‌کننده متداول مانند less(1)، علاوه بر «صفحه‌بندی» (یعنی پیمایش در خروجی)، از باز کردن یا نوشتن در فایل‌های دیگر و اجرای دستورات دلخواه شل نیز پشتیبانی می‌کنند. هنگامی که دستورات با اختیارات ارتقایافته اجرا می‌شوند (مثلاً تحت sudo(8) یا pkexec(1))، صفحه‌بندی‌کننده به یک مرز امنیتی تبدیل می‌شود. باید دقت شود که تنها از برنامه‌هایی با عملکردهای کاملاً محدود به عنوان صفحه‌بندی‌کننده استفاده شود و قابلیت‌های تعاملی ناخواسته مانند باز کردن یا ایجاد فایل‌های جدید یا راه‌اندازی زیرپردازه‌ها مجاز نباشد. «حالت امن» (secure mode) برای صفحه‌بندی‌کننده می‌تواند مطابق شرح زیر فعال شود، در صورتی که صفحه‌بندی‌کننده از آن پشتیبانی کند (بیشتر صفحه‌بندی‌کننده‌ها با در نظر گرفتن این موضوع نوشته نشده‌اند). توصیه می‌شود هنگام اجازه دادن به کاربران غیرقابل اعتماد برای اجرای دستورات با اختیارات بالا، «حالت امن» را صراحتاً فعال کنید یا با استفاده از گزینه --no-pager یا تنظیم PAGER=cat صفحه‌بندی‌کننده را کاملاً غیرفعال نمایید.

این گزینه یک آرگومان بولی می‌پذیرد. هنگامی که مقدار true تنظیم شود، «حالت امن» صفحه‌بندی‌کننده فعال می‌شود. در «حالت امن»، متغیر LESSSECURE=1 هنگام فراخوانی صفحه‌بندی‌کننده تنظیم خواهد شد که به آن دستور می‌دهد دستوراتی که فایل‌های جدید را باز یا ایجاد کرده یا زیرپردازه‌های جدید اجرا می‌کنند، غیرفعال کند. در حال حاضر تنها less(1) شناخته شده است که این متغیر را درک کرده و «حالت امن» را پیاده‌سازی می‌کند.

هنگامی که مقدار false تنظیم شود، هیچ محدودیتی بر صفحه‌بندی‌کننده اعمال نمی‌شود. تنظیم 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

یک آرگومان بولی یا یک مقدار ویژه می‌پذیرد. به‌طور پیش‌فرض (تنظیم‌نشده)، systemd و ابزارهای وابسته در صورت امکان از رنگ‌ها در خروجی خود استفاده خواهند کرد. اگر $COLORTERM روی "truecolor" یا "24bit" تنظیم شده باشد، رنگ‌های ۲۴ بیتی فعال خواهند شد، در غیر این صورت ۲۵۶ رنگ فعال می‌شود، مگر اینکه $NO_COLOR یا $TERM نشان دهند که رنگ‌ها غیرفعال هستند.

true

همانند حالت تنظیم‌نشده، با این تفاوت که $NO_COLOR نادیده گرفته می‌شود.

false

خروجی تک‌رنگ (سیاه و سفید) خواهد بود.

"16"، "256"، "24bit"

همیشه به ترتیب از ۱۶ رنگ پایه ANSI، ۲۵۶ رنگ یا رنگ‌های ۲۴ بیتی استفاده کن.

"auto-16"، "auto-256"، "auto-24bit"

استفاده از تعداد رنگ‌های داده‌شده، بسته به $TERM و آنچه کنسول به آن متصل است.

$SYSTEMD_URLIFY

مقدار باید یک بولی باشد. مشخص می‌کند که آیا در شبیه‌سازهای ترمینالی که از پیوندهای قابل کلیک پشتیبانی می‌کنند، پیوند ایجاد شود یا خیر. می‌توان این متغیر را برای لغو تصمیمی که systemd بر اساس $TERM و شرایط دیگر می‌گیرد مشخص نمود.

systemd(1)، locale(7)، locale.conf(5)، vconsole.conf(5)، loadkeys(1)، kbd(4)، The XKB Configuration Guide[2]، systemctl(1)، systemd-localed.service(8)، systemd-firstboot(1)

1.
توصیه می‌شود که سایر ابزارها نیز متغیر $SUDO_UID را در صورت لزوم تنظیم و بررسی کنند و با آن به عنوان یک رابط مشترک رفتار نمایند.
2.
The XKB Configuration Guide
systemd 261.2