CAPSULE@.SERVICE(5) capsule@.service CAPSULE@.SERVICE(5)

capsule@.service - سرویسهای کاربری کپسول سیستمدی (systemd)

capsule@NAME.service

مدیران سرویس برای کپسول‌ها در واحدهای سیستمی capsule@NAME.service اجرا می‌شوند که در آن‌ها نام کپسول به عنوان شناسه نمونه عمل می‌کند. کپسول‌ها راهکاری برای اجرای نمونه‌های اضافی از مدیر سرویس تحت شناسه‌های کاربری پویا (UIDهای پویا) هستند؛ یعنی UIDهایی که هنگام راه‌اندازی مدیر سرویس کپسول تخصیص یافته و پس از توقف آن آزاد می‌شوند.

از جهات بسیاری capsule@.service مشابه مدیر سرویس مختص هر کاربر user@.service است، اما چند تمایز مهم وجود دارد:

•مدیر سرویس کپسول از DynamicUser= (ببینید systemd.exec(5)) برای تخصیص پویای یک UID جدید هنگام فراخوانی استفاده می‌کند. نام کاربری به طور خودکار از نام کپسول با افزودن پیشوند "c-" تولید می‌شود. با خاتمه یافتن سرویس، این UID آزاد می‌گردد. در مقابل، مدیر سرویس کاربر تحت یک شناسه کاربری ایستا کار می‌کند که باید پیش از فراخوانی مدیر سرویس کاربر از پیش وجود داشته باشد.
•مدیران سرویس کاربر خود را در pam(8) ثبت می‌کنند، اما مدیران سرویس کپسول این کار را انجام نمی‌دهند.
•مدیران سرویس کاربر معمولاً پیکربندی خود را از یک دایرکتوری $HOME در زیر مسیر /home/ می‌خوانند، در حالی که مدیران سرویس کپسول آن را از یک دایرکتوری $HOME در زیر مسیر /var/lib/capsules/ بارگیری می‌کنند.
•مدیران سرویس کاربر همگی در واحد user.slice قرار دارند، در حالی که مدیران سرویس کپسول در capsule.slice جای می‌گیرند. همچنین ببینید systemd.special(7).
•مدیران سرویس کاربر در ابتدا واحد کاربری default.target را شروع می‌کنند. در عوض، مدیران سرویس کپسول واحد کاربری capsule@.target را فراخوانی می‌نمایند.

دسترسی به مدیر سرویس کپسول و کارگزار گذرگاه (bus broker) کپسول از طریق گزینه --capsule= در دستورات systemctl(1)، systemd-run(1) و busctl(1) امکان‌پذیر است.

کپسول‌های جدید را می‌توان با یک دستور ساده systemctl start capsule@NAME.service شروع کرد و با systemctl stop capsule@NAME.service متوقف نمود. شروع یک کپسول در صورت موجود نبودن دایرکتوری خانگی، دایرکتوری /var/lib/capsules/NAME/ را به صورت ضمنی ایجاد خواهد کرد. همچنین یک دایرکتوری زمان اجرا (runtime) به صورت /run/capsules/NAME/ ساخته می‌شود. برای حذف این منابع از دستور systemctl clean capsule@NAME.service، برای مثال همراه با گزینه --what=all استفاده کنید.

واحد capsule@.service یک فرآیند مدیر سرویس systemd --user را فراخوانی می‌کند. این بدان معناست که فایل‌های واحد بر اساس همان قوانین مدیران سرویس کاربر معمولی جستجو می‌شوند، برای مثال در /var/lib/capsules/NAME/.config/systemd/user/.

نام‌های کپسول می‌توانند آزادانه توسط کاربر انتخاب شوند؛ با این حال، باید به عنوان نام فایل یونیکس معتبر باشند (یعنی حداکثر ۲۵۵ کاراکتر و فاقد "/")، و هنگامی که پیشوند "c-" به آن‌ها اضافه می‌شود، به عنوان یک نام کاربری مطابق با قوانین سخت‌گیرانه POSIX مناسب باشند؛ برای جزئیات به User/Group Name Syntax[1] مراجعه کنید.

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

مثال 1. ایجاد یک کپسول جدید، اجرای دو برنامه در آن (یکی به صورت تعاملی)، خاتمه دادن به آن و پاکسازی کامل همه چیز

# systemctl start capsule@tatze.service
# systemd-run --capsule=tatze --unit=sleeptest.service sleep 999
# systemctl --capsule=tatze status sleeptest.service
# systemd-run -t --capsule=tatze bash
# systemctl --capsule=tatze stop sleeptest.service
# systemctl stop capsule@tatze.service
# systemctl clean --all capsule@tatze.service

systemd(1), user@.service(5), systemd.service(5), systemd.slice(5), systemd.exec(5), systemd.special(7), systemctl(1), systemd-run(1), busctl(1), pam(8)

1.
User/Group Name Syntax
systemd 261.2