SYSTEMD-SLEEP.CONF(5) systemd-sleep.conf SYSTEMD-SLEEP.CONF(5)

systemd-sleep.conf - پیکربندی حالت‌های تعلیق، خواب و هایبرنیت در systemd

/etc/systemd/sleep.conf
/run/systemd/sleep.conf
/usr/lib/systemd/sleep.conf
/etc/systemd/sleep.conf.d/*.conf
/run/systemd/sleep.conf.d/*.conf
/usr/lib/systemd/sleep.conf.d/*.conf

systemd از چهار حالت عمومی ذخیره انرژی (power-saving) پشتیبانی می‌کند:

suspend

یک وضعیت کم‌مصرف است که در آن اجرای سیستم‌عامل متوقف می‌شود و قطع کامل برق ممکن است منجر به از دست رفتن داده‌ها شود، و ورود به آن و خروج از آن سریع است. این متناظر با وضعیت‌های suspend، standby یا freeze است که برای هسته تعریف شده‌اند.

اضافه‌شده در نسخه 203.

hibernate

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

اضافه‌شده در نسخه 203.

hybrid-sleep

یک وضعیت کم‌مصرف است که در آن اجرای سیستم‌عامل متوقف می‌شود، ورود به آن ممکن است کند باشد، و در صورت قطع کامل برق منجر به از دست رفتن داده‌ها نمی‌شود اما در آن حالت ممکن است خروج از آن کندتر باشد. این حالت توسط هسته suspend-to-both نامیده می‌شود.

اضافه‌شده در نسخه 203.

suspend-then-hibernate

یک وضعیت کم‌مصرف است که در آن سیستم ابتدا تعلیق می‌شود (وضعیت در RAM ذخیره می‌شود). هنگامی که سطح باتری بیش از حد کم شود (کمتر از ۵٪) یا بازه زمانی مشخصی سپری شود، هرکدام که زودتر رخ دهد، سیستم به‌طور خودکار بیدار شده و سپس هایبرنیت می‌شود. این حالت تعادلی میان سرعت و امنیت برقرار می‌کند.

اگر سیستم باتری نداشته باشد، پس از سپری شدن HibernateDelaySec= هایبرنیت خواهد شد. اگر تنظیم نشده باشد، مقدار پیش‌فرض آن "2h" است.

اگر سیستم دارای باتری باشد، هشدارهای باتری کم (ACPI _BTP) ابتدا برای تشخیص درصد باتری و بیدار کردن سیستم جهت هایبرنیت امتحان می‌شوند. اگر HibernateDelaySec= نیز تنظیم شده باشد، یک تایمر اضافی پیکربندی می‌شود تا سیستم بر اساس هرکدام که زودتر اتفاق بیفتد هایبرنیت شود: باتری کم یا تاخیر پیکربندی‌شده. اگر ACPI _BTP در دسترس نباشد، سیستم به‌طور منظم بیدار می‌شود تا زمان را بررسی کرده و درصد باتری/نرخ تخلیه را تشخیص دهد. این نرخ برای زمان‌بندی تشخیص بعدی استفاده می‌شود. اگر آن نیز در دسترس نباشد، SuspendEstimationSec= به عنوان آخرین راهکار استفاده می‌شود.

اضافه‌شده در نسخه 239.

تنظیمات موجود در این فایل‌ها تعیین می‌کنند که چه رشته‌هایی در /sys/power/disk و /sys/power/state توسط systemd-sleep(8) نوشته خواهد شد، هنگامی که systemd(1) تلاش می‌کند ماشین را به حالت تعلیق یا هایبرنیت ببرد. برای توضیحات کلی درباره نحو به systemd.syntax(7) مراجعه کنید.

پیکربندی پیش‌فرض در زمان کامپایل تعیین می‌شود، بنابراین پیکربندی تنها زمانی مورد نیاز است که انحراف از آن مقادیر پیش‌فرض ضروری باشد. فایل پیکربندی اصلی از یکی از دایرکتوری‌های فهرست‌شده به ترتیب اولویت بارگذاری می‌شود، و تنها اولین فایل یافت‌شده استفاده می‌گردد: /etc/systemd/, /run/systemd/, /usr/local/lib/systemd/ [1], /usr/lib/systemd/. نسخه ارائه‌شده توسط توزیع‌کننده شامل مدخل‌های کامنت‌شده است که مقادیر پیش‌فرض را به عنوان راهنمایی برای مدیر سیستم نشان می‌دهند. همچنین می‌توان با ایجاد فایل‌های دراپ‌این (drop-ins)، همان‌طور که در ادامه شرح داده شده است، بازنویسی‌های محلی ایجاد کرد. فایل پیکربندی اصلی را نیز می‌توان برای این منظور ویرایش کرد (یا یک نسخه کپی در /etc/ اگر فایل تحت /usr/ عرضه شده باشد)، با این حال استفاده از دراپ‌این‌ها برای پیکربندی محلی نسبت به ایجاد تغییرات در فایل پیکربندی اصلی توصیه می‌شود.

علاوه بر فایل پیکربندی اصلی، قطعه‌کدهای پیکربندی دراپ‌این از مسیرهای زیر خوانده می‌شوند: /usr/lib/systemd/*.conf.d/, /usr/local/lib/systemd/*.conf.d/, و /etc/systemd/*.conf.d/. این دراپ‌این‌ها اولویت بالاتری دارند و فایل پیکربندی اصلی را بازنویسی (override) می‌کنند. فایل‌ها در زیرشاخه‌های پیکربندی *.conf.d/ بر اساس نام فایل خود به ترتیب لغت‌نگاری مرتب می‌شوند، بدون توجه به اینکه در کدام‌یک از زیرشاخه‌ها قرار دارند. هنگامی که چندین فایل یک گزینه مشابه را مشخص کنند، برای گزینه‌هایی که تنها یک مقدار واحد می‌پذیرند، مدخل موجود در فایلی که در آخر مرتب شده است اولویت دارد؛ و برای گزینه‌هایی که فهرستی از مقادیر را می‌پذیرند، مدخل‌ها به همان ترتیبی که در فایل‌های مرتب‌شده ظاهر می‌شوند جمع‌آوری می‌گردند.

هنگامی که بسته‌ها نیاز به سفارشی‌سازی پیکربندی دارند، می‌توانند دراپ‌این‌ها را در زیر /usr/ نصب کنند. فایل‌های موجود در /etc/ برای مدیر محلی سیستم رزرو شده‌اند، که می‌تواند از این منطق برای بازنویسی فایل‌های پیکربندی نصب‌شده توسط بسته‌های توزیع‌کننده استفاده کند. برای بازنویسی دراپ‌این‌های بسته، باید از دراپ‌این‌ها استفاده شود، زیرا فایل پیکربندی اصلی اولویت پایین‌تری دارد. توصیه می‌شود نام تمام فایل‌ها در این زیرشاخه‌ها با یک عدد دورقمی و یک خط تیره شروع شود تا مرتب‌سازی ساده‌تر گردد. این امر همچنین مفهوم اولویت‌های دراپ‌این را تعریف می‌کند تا به ارائه‌دهندگان سیستم‌عامل امکان دهد دراپ‌این‌ها را در یک محدوده خاص، پایین‌تر از محدوده مورداستفاده کاربران عرضه کنند. این کار باید خطر بازنویسی تصادفی دراپ‌این‌های تعریف‌شده توسط کاربران را توسط دراپ‌این‌های بسته‌ها کاهش دهد. توصیه می‌شود از محدوده 10-40 برای دراپ‌این‌های واقع در /usr/ و از محدوده 60-90 برای دراپ‌این‌های واقع در /etc/ و /run/ استفاده شود تا اطمینان حاصل گردد که دراپ‌این‌های محلی و گذرا بر دراپ‌این‌های ارائه‌شده توسط توزیع‌کننده سیستم‌عامل اولویت دارند.

برای غیرفعال کردن یک فایل پیکربندی ارائه‌شده توسط توزیع‌کننده، روش توصیه‌شده قرار دادن یک پیوند نمادین (symlink) به /dev/null در دایرکتوری پیکربندی در /etc/، با همان نام فایل پیکربندی توزیع‌کننده است.

گزینه‌های زیر را می‌توان در بخش [Sleep] فایل /etc/systemd/sleep.conf یا یک فایل sleep.conf.d پیکربندی کرد:

AllowSuspend=, AllowHibernation=, AllowHybridSleep=, AllowSuspendThenHibernate=

به‌طور پیش‌فرض، هر حالت ذخیره انرژی در صورت امکان اعلان می‌شود (یعنی هسته از آن حالت پشتیبانی کند و منابع لازم در دسترس باشند). از این سوئیچ‌ها می‌توان برای غیرفعال کردن حالت‌های خاص استفاده کرد.

اگر AllowHibernation=no یا AllowSuspend=no استفاده شود، این به معنای AllowSuspendThenHibernate=no و AllowHybridSleep=no خواهد بود، زیرا این روش‌ها در داخل از هر دو حالت تعلیق و هایبرنیت استفاده می‌کنند. AllowSuspendThenHibernate=yes و AllowHybridSleep=yes می‌توانند برای بازنویسی و فعال‌سازی آن حالت‌های خاص استفاده شوند.

اضافه‌شده در نسخه 240.

SuspendState=

رشته‌ای که باید در /sys/power/state توسط systemd-suspend.service(8) نوشته شود. بیش از یک مقدار را می‌توان با جدا کردن مقادیر متعدد با فاصله مشخص کرد. آن‌ها به نوبت امتحان خواهند شد، تا زمانی که یکی بدون خطا نوشته شود. اگر هیچ‌یک از نوشتن‌ها موفقیت‌آمیز نباشد، عملیات لغو خواهد شد.

مجموعه مقادیر مجاز توسط هسته تعیین می‌شود و در خود فایل نشان داده شده است (برای نمایش از cat /sys/power/state استفاده کنید). برای جزئیات بیشتر به Basic sysfs Interfaces for System Suspend and Hibernation[2] مراجعه کنید.

systemd-suspend-then-hibernate.service(8) هنگام تعلیق از این مقدار استفاده می‌کند.

اضافه‌شده در نسخه 203.

HibernateMode=

رشته‌ای که باید در /sys/power/disk توسط systemd-hibernate.service(8) نوشته شود. بیش از یک مقدار را می‌توان با جدا کردن مقادیر متعدد با فاصله مشخص کرد. آن‌ها به نوبت امتحان خواهند شد، تا زمانی که یکی بدون خطا نوشته شود. اگر هیچ‌یک از نوشتن‌ها موفقیت‌آمیز نباشد، عملیات لغو خواهد شد.

مجموعه مقادیر مجاز توسط هسته تعیین می‌شود و در خود فایل نشان داده شده است (برای نمایش از cat /sys/power/disk استفاده کنید). برای جزئیات بیشتر به صفحه مستندات هسته Basic sysfs Interfaces for System Suspend and Hibernation[2] مراجعه کنید.

systemd-suspend-then-hibernate.service(8) هنگام هایبرنیت از مقدار HibernateMode= استفاده می‌کند.

اضافه‌شده در نسخه 203.

MemorySleepMode=

رشته‌ای که باید در /sys/power/mem_sleep نوشته شود هنگامی که SuspendState=mem یا hybrid-sleep استفاده می‌شود. بیش از یک مقدار را می‌توان با جدا کردن مقادیر متعدد با فاصله مشخص کرد. آن‌ها به نوبت امتحان خواهند شد، تا زمانی که یکی بدون خطا نوشته شود. اگر هیچ‌یک از نوشتن‌ها موفقیت‌آمیز نباشد، عملیات لغو خواهد شد. مقدار پیش‌فرض خالی است، یعنی پیش‌فرض هسته یا گزینه خط فرمان هسته mem_sleep_default= رعایت می‌شود.

مجموعه مقادیر مجاز توسط هسته تعیین می‌شود و در خود فایل نشان داده شده است (برای نمایش از cat /sys/power/mem_sleep استفاده کنید). برای جزئیات بیشتر به صفحه مستندات هسته Basic sysfs Interfaces for System Suspend and Hibernation[2] مراجعه کنید.

اضافه‌شده در نسخه 256.

HibernateDelaySec=

مدت زمانی که سیستم پیش از قرار گرفتن خودکار در حالت هایبرنیت، در حالت تعلیق سپری می‌کند. فقط توسط systemd-suspend-then-hibernate.service(8) استفاده می‌شود. برای جزئیات درباره نحوه تعامل این گزینه با سایر گزینه‌ها/وضعیت باتری سیستم، به suspend-then-hibernate مراجعه کنید.

اضافه‌شده در نسخه 239.

HibernateOnACPower=

اینکه آیا در زمان اتصال سیستم به برق متناوب (AC) هایبرنیت مجاز است یا خیر. فقط توسط systemd-suspend-then-hibernate.service(8) هنگامی که HibernateDelaySec= تنظیم شده باشد استفاده می‌شود.

اگر این گزینه غیرفعال باشد، شمارش معکوس HibernateDelaySec= فقط پس از قطع برق AC شروع می‌شود، و در غیر این صورت سیستم در حالت تعلیق نگه داشته می‌شود.

این گزینه فقط در سیستم‌های دارای باتری مؤثر است.

اضافه‌شده در نسخه 257.

SuspendEstimationSec=

هشدار RTC سیستم را پس از بازه زمانی مشخص‌شده بیدار می‌کند تا سطح ظرفیت باتری سیستم را اندازه‌گیری کرده و نرخ تخلیه باتری را تخمین بزند. فقط توسط systemd-suspend-then-hibernate.service(8) استفاده می‌شود. برای جزئیات درباره نحوه تعامل این گزینه با سایر گزینه‌ها/وضعیت باتری سیستم، به suspend-then-hibernate مراجعه کنید.

اضافه‌شده در نسخه 253.

مثال: برای بهره‌برداری از حالت “freeze” اضافه‌شده در لینوکس 3.9، می‌توان از systemctl suspend همراه با پیکربندی زیر استفاده کرد:

[Sleep]
SuspendState=freeze

systemd-sleep(8), systemd-suspend.service(8), systemd-hibernate.service(8), systemd-hybrid-sleep.service(8), systemd-suspend-then-hibernate.service(8), systemd(1), systemd.directives(7)

1.
💣💥🧨💥💥💣 لطفاً توجه داشته باشید که این فایل‌های پیکربندی باید در تمام زمان‌ها در دسترس باشند. اگر /usr/local/ یک پارتیشن جداگانه باشد، ممکن است در مراحل اولیه بوت در دسترس نباشد و نباید برای پیکربندی استفاده شود.
2.
Basic sysfs Interfaces for System Suspend and Hibernation
systemd 261.2