SYSTEMD.PRESET(5) systemd.preset SYSTEMD.PRESET(5)

systemd.preset - پیش‌تنظیمات فعال‌سازی خودکار سرویس‌ها و واحدهای systemd

/etc/systemd/system-preset/*.preset
/run/systemd/system-preset/*.preset
/usr/local/lib/systemd/system-preset/*.preset
/usr/lib/systemd/system-preset/*.preset
/etc/systemd/user-preset/*.preset
/run/systemd/user-preset/*.preset
/usr/local/lib/systemd/user-preset/*.preset
/usr/lib/systemd/user-preset/*.preset
/etc/systemd/initrd-preset/*.preset
/run/systemd/initrd-preset/*.preset
/usr/local/lib/systemd/initrd-preset/*.preset
/usr/lib/systemd/initrd-preset/*.preset

پرونده‌های پیش‌تنظیم ممکن است برای کدگذاری خط‌مشی این‌که کدام واحدها به‌طور پیش‌فرض فعال و کدام‌یک باید غیرفعال باشند، به کار روند. آن‌ها توسط systemctl preset خوانده می‌شوند که از این اطلاعات برای فعال یا غیرفعال کردن یک واحد استفاده می‌کند. بسته به آن خط‌مشی، systemctl preset همانند systemctl enable یا systemctl disable است. systemctl preset توسط اسکریپت‌های پس از نصب بسته‌های rpm (یا سایر قالب‌های بسته‌بندی سیستم‌عامل) استفاده می‌شود تا واحدهای خاصی را به‌طور پیش‌فرض در هنگام نصب بسته فعال/غیرفعال کند و خط‌مشی پیش‌تنظیم توزیع، اشتقاق یا مدیر سیستم را اعمال نماید. این امر اجازه می‌دهد تا حتی پیش از نصب خود بسته، مجموعه‌ای از واحدها برای فعال یا غیرفعال شدن انتخاب شوند. برای اطلاعات بیشتر، systemctl(1) را ببینید.

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

اگر هیچ پرونده پیش‌تنظیمی وجود نداشته باشد، عملیات پیش‌تنظیم همه واحدهای نصب‌شده را به‌طور پیش‌فرض فعال خواهد کرد. اگر این وضعیت مطلوب نیست و ترجیح داده می‌شود همه واحدها غیرفعال شوند، لازم است پرونده پیش‌تنظیمی حاوی یک خط منفرد و فراگیر «disable *» ارائه شود. (مثال ۱ را در زیر ببینید.)

هنگامی که دستگاه برای نخستین بار راه‌اندازی (boot) می‌شود، systemd(1) همه واحدها را بر اساس خط‌مشی پیش‌تنظیم فعال/غیرفعال خواهد کرد، مشابه با systemctl preset-all. همچنین ببینید ConditionFirstBoot= در systemd.unit(5) و «معناشناسی اولین بوت (First Boot Semantics)» در machine-id(5).

پرونده‌های پیش‌تنظیم شامل فهرستی از دستورالعمل‌ها، یک مورد در هر خط هستند. خطوط خالی و خطوطی که نخستین نویسه غیر فاصله‌ای آن‌ها "#" یا ";" است نادیده گرفته می‌شوند. هر دستورالعمل شامل یکی از کلمات "enable"، "disable" یا "ignore" است که به دنبال آن فاصله خالی و نام یک واحد می‌آید. نام واحد می‌تواند شامل نویسه‌های عام سبک شل (wildcards) باشد.

برای دستورالعمل enable برای واحدهای الگو، می‌توان یک یا چند نام نمونه (instance) را به صورت فهرستی که با فاصله جدا شده‌اند پس از نام واحد مشخص کرد. در این حالت، آن نمونه‌ها به جای نمونه‌ای که از طریق DefaultInstance= در واحد مشخص شده است، فعال خواهند شد.

پیش‌تنظیمات باید به پرونده واحد «واقعی» اشاره کنند و نه به هیچ نام مستعاری. برای توضیحات مربوط به نام مستعار واحدها، systemd.unit(5) را ببینید.

سه دستورالعمل مختلف درک می‌شوند: "enable" ممکن است برای فعال کردن واحدها به‌طور پیش‌فرض استفاده شود، "disable" برای غیرفعال کردن واحدها به‌طور پیش‌فرض، و "ignore" برای نادیده گرفتن واحدها و دست‌نخورده باقی گذاشتن پیکربندی موجود.

اگر چندین خط برای یک نام واحد اعمال شوند، اولین خط منطبق بر بقیه اولویت دارد.

هر پرونده پیش‌تنظیم باید به شیوه <priority>-<policy-name>.preset نام‌گذاری شود. پرونده‌های موجود در /etc/ بر پرونده‌های با همان نام در /usr/lib/ و /run/ اولویت دارند. پرونده‌های موجود در /run/ بر پرونده‌های با همان نام در /usr/lib/ اولویت دارند. بسته‌ها باید پرونده‌های پیش‌تنظیم خود را در /usr/lib/ نصب کنند. پرونده‌های موجود در /etc/ برای مدیر سیستم محلی رزرو شده‌اند، که می‌تواند از این منطق برای بازنویسی پرونده‌های پیش‌تنظیم نصب‌شده توسط بسته‌های ارائه‌دهنده استفاده کند. همه پرونده‌های پیش‌تنظیم بدون در نظر گرفتن این‌که در کدام یک از شاخه‌ها قرار دارند، بر اساس نام پرونده خود به ترتیب الفبایی مرتب می‌شوند. اگر چندین پرونده نام واحد یکسانی را مشخص کنند، مدخل پرونده‌ای که از نظر الفبایی نام مقدم‌تری دارد اعمال خواهد شد. توصیه می‌شود که برای ساده‌سازی ترتیب پرونده‌ها، پیشوند همه نام‌های پرونده یک عدد دورقمی و یک خط تیره باشد.

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

مثال 1. غیرفعال بودن به صورت پیش‌فرض

# /usr/lib/systemd/system-preset/99-default.preset
disable *

این کار همه واحدها را غیرفعال می‌کند. به دلیل پیشوند نام پرونده "99-"، این پرونده در آخرین مرحله خوانده می‌شود و بنابراین می‌تواند به سادگی توسط خط‌مشی پیش‌تنظیم اشتقاق یا مدیر سیستم بازنویسی شود.

مثال 2. فعال‌سازی چندین نمونه الگو

# /usr/lib/systemd/system-preset/80-dirsrv.preset
enable dirsrv@.service foo bar baz

این دستور هر سه مورد dirsrv@foo.service، dirsrv@bar.service و dirsrv@baz.service را فعال می‌کند.

مثال 3. یک اشتقاق گنوم (GNOME spin)

# /usr/lib/systemd/system-preset/50-gnome.preset
enable gdm.service
enable colord.service
enable accounts-daemon.service
enable avahi-daemon.*

این دستور سه واحد ذکر شده به علاوه تمام واحدهای avahi-daemon را بدون توجه به نوع واحد فعال می‌کند. پرونده‌ای مانند این می‌تواند برای گنجاندن در یک اشتقاق گنوم از یک توزیع مفید باشد. این کار تضمین می‌کند که واحدهای لازم برای گنوم به محض نصب به درستی فعال شوند. همچنین سایر واحدها را دست‌نخورده باقی می‌گذارد تا مشمول سایر پرونده‌های پیش‌تنظیم (بعدی)، برای مثال مانند نمونه اول در بالا شوند.

مثال 4. خط‌مشی مدیر سیستم

# /etc/systemd/system-preset/00-lennart.preset
enable httpd.service
enable sshd.service
enable postfix.service
disable *

این پیکربندی سه سرویس خاص را فعال و همه سرویس‌های دیگر را غیرفعال می‌کند. این برای مدیران سیستم جهت انتخاب دقیق واحدهای قابل فعال‌سازی و غیرفعال کردن سایر واحدها کاربردی است. به دلیل پیشوند نام پرونده "00-" این پرونده زودتر خوانده می‌شود و تمام پرونده‌های خط‌مشی پیش‌تنظیم دیگر را بازنویسی می‌کند.

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

حتی درون یک توزیع واحد، اشتقاق‌های مختلف (طعم‌ها، ریمیکس‌ها، یا هر نام دیگری که ممکن است روی آن‌ها بگذارید) نیز خط‌مشی‌های متفاوتی در مورد سرویس‌های فعال و سرویس‌های غیرفعال دارند. به عنوان مثال، Fedora Workstation به‌طور پیش‌فرض gdm را به عنوان مدیر نمایش به صورت پیش‌فرض فعال می‌کند، در حالی که اشتقاق Fedora KDE به جای آن sddm را فعال خواهد کرد.

مراکز و سیستم‌های مختلف نیز ممکن است خط‌مشی‌های متفاوتی در مورد مواردی که باید به‌طور پیش‌فرض روشن یا خاموش شوند داشته باشند. به عنوان مثال، ممکن است یک مدیر سیستم ترجیح دهد خط‌مشی «sshd باید همیشه روشن باشد، اما همه چیز دیگر خاموش» را اعمال کند، در حالی که مدیر دیگری بگوید «snmpd همیشه روشن باشد، و برای سایر موارد از پیش‌فرض‌های خط‌مشی توزیع استفاده شود».

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

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

systemd(1)، systemctl(1)، systemd-delta(1)

daemon(7) حاوی بحثی پیرامون اسکریپت‌های بسته‌بندی است.

صفحه فدورا برای معرفی استفاده از پیش‌تنظیمات: Features/PackagePresets[1].

1.
Features/PackagePresets
systemd 261.2