SYSTEMD-INHIBIT(1) systemd-inhibit SYSTEMD-INHIBIT(1)

systemd-inhibit - اجرای یک برنامه با اعمال قفل بازدارنده (inhibition lock)

systemd-inhibit [OPTIONS...] [COMMAND] [ARGUMENTS...]

systemd-inhibit [OPTIONS...] [--list]

systemd-inhibit می‌تواند برای اجرای یک برنامه با در اختیار گرفتن یک قفل بازدارنده خاموش‌شدن (shutdown)، خواب (sleep) یا بی‌کاری (idle) استفاده شود. این قفل پیش از اجرای خط فرمان مشخص‌شده اخذ شده و پس از اتمام آن آزاد می‌گردد.

قفل‌های بازدارنده (Inhibitor locks) می‌توانند برای مسدود کردن یا به تاخیر انداختن درخواست‌های خواب و خاموش‌شدن سیستم از سوی کاربر و همچنین مدیریت خودکار بی‌کاری توسط سیستم‌عامل استفاده شوند. این ویژگی برای جلوگیری از تعلیق (suspend) سیستم هنگام رایت کردن یک دیسک نوری یا عملیات مشابهی که نباید متوقف شوند مفید است.

برای اطلاعات بیشتر قفل‌های بازدارنده (Inhibitor Locks)[1] را ببینید.

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

--what=

فهرستی از یک یا چند عملیات جداشده با دونقطه (:) را برای بازداری دریافت می‌کند: "shutdown"، "sleep"، "idle"، "handle-power-key"، "handle-reboot-key"، "handle-suspend-key"، "handle-hibernate-key"، "handle-lid-switch"، که به ترتیب برای بازداری از راه‌اندازی مجدد/خاموش کردن/توقف/kexec/راه‌اندازی مجدد نرم (soft-reboot)، تعلیق/خواب زمستانی، تشخیص خودکار بی‌کاری، یا مدیریت سطح پایین کلیدهای پاور/راه‌اندازی مجدد/خواب و سوییچ درب لپ‌تاپ به کار می‌روند. در صورت حذف، مقدار پیش‌فرض آن "idle:sleep:shutdown" است.

--who=

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

--why=

یک رشته توصیفی کوتاه و خوانا برای انسان به عنوان دلیل گرفتن قفل دریافت می‌کند. مقدار پیش‌فرض آن "Unknown reason" (دلیل نامشخص) است.

--mode=

یکی از مقادیر "block"، "delay" یا "block-weak" را می‌پذیرد و نحوه اعمال قفل را توصیف می‌کند. اگر از "block" استفاده شود (پیش‌فرض)، قفل از هر یک از عملیات درخواست‌شده بدون محدودیت زمانی جلوگیری می‌کند، و تنها کاربران دارای امتیاز می‌توانند آن را نادیده بگیرند (لغو کنند). نوع قفل بازدارنده "block-weak" مشابه "block" است اما در برابر عملیات آغازشده توسط کلاینت‌های دارای امتیاز یا عملیات متعلق به همان کاربری که مالک قفل بازدارنده است اعمال نمی‌شود. اگر از "delay" استفاده شود، قفل تنها می‌تواند عملیات درخواستی را برای مدت محدودی به تاخیر بیندازد. اگر زمان به پایان برسد، قفل نادیده گرفته شده و عملیات اجرا می‌شود. این محدودیت زمانی را می‌توان در logind.conf(5) تعیین کرد. توجه داشته باشید که "delay" تنها برای "sleep" و "shutdown" در دسترس است.

--list

به جای گرفتن قفل، تمام قفل‌های بازدارنده فعال را فهرست می‌کند. این فهرست می‌تواند با استفاده از --what=، --who=، --why= یا --mode= فیلتر شود.

--no-ask-password

از کاربر برای احراز هویت در عملیات دارای امتیاز سوال نمی‌پرسد.

--no-pager

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

--no-legend

راهنما (legend)، یعنی سرستون‌ها و پاورقی همراه با نکات را چاپ نمی‌کند.

--json=MODE

خروجی را با قالب‌بندی JSON نمایش می‌دهد. یکی از مقادیر "short" (برای کوتاه‌ترین خروجی ممکن بدون هیچ‌گونه فاصله خالی اضافی یا شکست خط)، "pretty" (برای نسخه زیبای همان خروجی، همراه با تورفتگی و شکست خط) یا "off" (برای خاموش کردن خروجی JSON، مقدار پیش‌فرض) را می‌پذیرد.

-h, --help

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

--version

یک رشته کوتاه نسخه را چاپ کرده و خارج می‌شود.

کد خروج برنامه اجراشده را بازمی‌گرداند.

# systemd-inhibit wodim foobar.iso

این دستور ایمیج ISO foobar.iso را با استفاده از wodim(1) روی یک CD رایت می‌کند، و در حین انجام این کار از به خواب رفتن سیستم، خاموش شدن و بی‌کاری جلوگیری می‌نماید.

$SYSTEMD_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

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

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

$SYSTEMD_LOG_TIME

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

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

$SYSTEMD_LOG_LOCATION

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

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

$SYSTEMD_LOG_TID

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

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

$SYSTEMD_LOG_TARGET

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

$SYSTEMD_LOG_RATELIMIT_KMSG

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

$SYSTEMD_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

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

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

$SYSTEMD_PAGERSECURE

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

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

هنگامی که روی نادرست تنظیم شود، هیچ محدودیتی بر صفحه‌بند اعمال نمی‌شود. تنظیم SYSTEMD_PAGERSECURE=0 یا حذف نکردن آن از متغیرهای محیطی به ارث رسیده ممکن است به کاربر اجازه دهد دستورات دلخواه را اجرا کند.

هنگامی که $SYSTEMD_PAGERSECURE تنظیم نشده باشد، ابزارهای systemd تلاش می‌کنند تا به طور خودکار تشخیص دهند که آیا «حالت امن» باید فعال شود و آیا صفحه‌بند از آن پشتیبانی می‌کند یا خیر. اگر UID مؤثر با مالک نشست ورود یکسان نباشد، به geteuid(2) و sd_pid_get_owner_uid(3) مراجعه کنید، یا هنگام اجرا تحت sudo(8) یا ابزارهای مشابه ($SUDO_UID تنظیم شده باشد [2]). در این موارد، SYSTEMD_PAGERSECURE=1 تنظیم می‌شود و صفحه‌بندهایی که پیاده‌سازی «حالت امن» در آن‌ها شناخته‌شده نیست اصلاً استفاده نخواهند شد. توجه داشته باشید که این تشخیص خودکار فقط متداول‌ترین سازوکارهای ارتقای امتیازات را پوشش می‌دهد و برای راحتی کار در نظر گرفته شده است. توصیه می‌شود صراحتاً $SYSTEMD_PAGERSECURE را تنظیم کرده یا صفحه‌بند را غیرفعال کنید.

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

$SYSTEMD_COLORS

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

true

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

false

خروجی تک‌رنگ خواهد بود.

"16", "256", "24bit"

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

"auto-16", "auto-256", "auto-24bit"

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

$SYSTEMD_URLIFY

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

systemd(1), logind.conf(5)

1.
قفل‌های بازدارنده (Inhibitor Locks)
2.
توصیه می‌شود سایر ابزارها نیز $SUDO_UID را در صورت لزوم تنظیم و بررسی کنند و با آن به عنوان یک رابط مشترک رفتار نمایند.
systemd 261.2