SYSTEMD.SOCKET(5) systemd.socket SYSTEMD.SOCKET(5)

systemd.socket - پیکربندی واحد سوکت

socket.socket

یک فایل پیکربندی واحد که نام آن به ".socket" ختم می‌شود، اطلاعات مربوط به یک سوکت IPC یا شبکه یا یک FIFO در سیستم فایل را که تحت کنترل و نظارت systemd است، برای فعال‌سازی مبتنی بر سوکت کدگذاری می‌کند.

این صفحه راهنما، گزینه‌های پیکربندی مخصوص این نوع واحد را فهرست می‌کند. برای گزینه‌های مشترک تمام فایل‌های پیکربندی واحد، systemd.unit(5) را ببینید. موارد پیکربندی مشترک در بخش‌های عمومی [Unit] و [Install] پیکربندی می‌شوند. گزینه‌های پیکربندی مخصوص سوکت در بخش [Socket] پیکربندی می‌شوند.

گزینه‌های اضافی در systemd.exec(5) فهرست شده‌اند، که محیط اجرایی را که دستورات ExecStartPre=، ExecStartPost=، ExecStopPre= و ExecStopPost= در آن اجرا می‌شوند تعریف می‌کند، و در systemd.kill(5)، که نحوه خاتمه فرآیندها را تعریف می‌کند، و در systemd.resource-control(5)، که تنظیمات کنترل منابع را برای فرآیندهای سوکت پیکربندی می‌کند.

برای هر واحد سوکت، باید یک واحد سرویس منطبق وجود داشته باشد که سرویسی را که باید با ترافیک ورودی روی سوکت شروع شود توصیف کند (برای اطلاعات بیشتر درباره واحدهای .service به systemd.service(5) مراجعه کنید). نام واحد .service به‌طور پیش‌فرض همان نام واحد .socket است، اما می‌توان آن را با گزینه Service= که در زیر توضیح داده شده تغییر داد. بسته به تنظیم گزینه Accept= که در زیر توضیح داده شده، این واحد .service یا باید مانند واحد .socket نام‌گذاری شود ولی با پسوند جایگزین‌شده، مگر اینکه با Service= بازنویسی شود؛ یا باید یک واحد الگو باشد که به همان شیوه نام‌گذاری شده است. مثال: یک فایل سوکت foo.socket در صورت تنظیم Accept=no به یک سرویس منطبق foo.service نیاز دارد. اگر Accept=yes تنظیم شده باشد، باید یک الگوی سرویس foo@.service وجود داشته باشد که به ازای هر اتصال ورودی، سرویس‌هایی از روی آن نمونه‌سازی شوند.

هیچ وابستگی ضمنی WantedBy= یا RequiredBy= از سوکت به سرویس اضافه نمی‌شود. این بدان معناست که سرویس ممکن است بدون سوکت شروع شود، که در این صورت باید بتواند خودش سوکت‌ها را باز کند. برای جلوگیری از این موضوع، می‌توان یک وابستگی صریح Requires= اضافه کرد.

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

توجه داشته باشید که نرم‌افزار دیمن پیکربندی‌شده برای فعال‌سازی از طریق سوکت با واحدهای سوکت باید بتواند سوکت‌ها را از systemd بپذیرد؛ یا از طریق واسط بومی انتقال سوکت systemd (برای جزئیات درباره پروتکل دقیق استفاده‌شده و ترتیبی که توصیف‌کننده‌های فایل منتقل می‌شوند به sd_listen_fds(3) مراجعه کنید) یا از طریق انتقال سوکت به سبک سنتی inetd(8) (یعنی سوکت‌هایی که از طریق ورودی و خروجی استاندارد، با استفاده از StandardInput=socket در فایل سرویس منتقل می‌شوند).

به‌طور پیش‌فرض، سوکت‌های شبکه‌ای تخصیص‌یافته از طریق واحدهای .socket در فضای‌نام شبکه میزبان تخصیص می‌یابند (به network_namespaces(7) مراجعه کنید). با این حال این بدان معنا نیست که سرویس فعال‌شده توسط یک واحد سوکت پیکربندی‌شده نیز لزوماً باید بخشی از فضای‌نام شبکه میزبان باشد. اجرای سرویس‌ها در فضای‌نام شبکه مخصوص خودشان (برای مثال از طریق PrivateNetwork=، به systemd.exec(5) مراجعه کنید) کاملاً پشتیبانی می‌شود و حتی یک شیوه کاری خوب است، به طوری که تنها سوکت‌های پیکربندی‌شده از طریق فعال‌سازی سوکت را از فضای‌نام میزبان دریافت کنند. در چنین پیکربندی‌ای، ارتباط درون فضای‌نام شبکه میزبان تنها از طریق سوکت‌های فعال‌سازی منتقل‌شده مجاز است، در حالی که تمام سوکت‌های تخصیص‌یافته از خود کد سرویس به فضای‌نام اختصاصی سرویس مرتبط خواهند بود و بنابراین احتمالاً مشمول یک پیکربندی محدودکننده قرار می‌گیرند.

به عنوان روشی دیگر، اجرای یک واحد .socket در یک فضای‌نام شبکه دیگر با تنظیم PrivateNetwork=yes همراه با JoinsNamespaceOf= امکان‌پذیر است؛ برای جزئیات به systemd.exec(5) و systemd.unit(5) مراجعه کنید.

وابستگی‌های زیر به‌طور ضمنی اضافه می‌شوند:

•واحدهای سوکت به‌طور خودکار یک وابستگی Before= نسبت به واحدهای سرویسی که فعال می‌کنند به دست می‌آورند.
•واحدهای سوکت که به مسیرهای سیستم فایل اشاره دارند (مانند سوکت‌های AF_UNIX یا FIFOها) به‌طور ضمنی وابستگی‌های Requires= و After= نسبت به تمام واحدهای سوار کردنی که برای دسترسی به آن مسیرها ضروری هستند به دست می‌آورند.
•واحدهای سوکت که از تنظیم BindToDevice= استفاده می‌کنند به‌طور خودکار یک وابستگی BindsTo= و After= نسبت به واحد دستگاهی که رابط شبکه مشخص‌شده را کپسوله‌سازی می‌کند به دست می‌آورند.

وابستگی‌های ضمنی اضافی ممکن است در نتیجه پارامترهای اجرا و کنترل منابع، همان‌طور که در systemd.exec(5) و systemd.resource-control(5) مستند شده است، اضافه شوند.

وابستگی‌های زیر اضافه می‌شوند مگر اینکه DefaultDependencies=no تنظیم شده باشد:

•واحدهای سوکت به‌طور خودکار یک وابستگی Before= نسبت به sockets.target به دست می‌آورند.
•واحدهای سوکت به‌طور خودکار یک جفت وابستگی After= و Requires= نسبت به sysinit.target، و یک جفت وابستگی Before= و Conflicts= نسبت به shutdown.target به دست می‌آورند. این وابستگی‌ها اطمینان حاصل می‌کنند که واحد سوکت قبل از سرویس‌های عادی در زمان بوت شروع شود و در هنگام خاموش شدن متوقف گردد. تنها سوکت‌هایی که در مراحل اولیه بوت یا مراحل پایانی خاموش شدن سیستم نقش دارند باید گزینه DefaultDependencies= را غیرفعال کنند.

فایل‌های واحد سوکت ممکن است شامل بخش‌های [Unit] و [Install] باشند که در systemd.unit(5) توصیف شده‌اند.

فایل‌های واحد سوکت باید شامل بخش [Socket] باشند که حامل اطلاعات مربوط به سوکت یا FIFO تحت نظارت آن است. تعدادی از گزینه‌هایی که ممکن است در این بخش استفاده شوند با انواع واحدهای دیگر مشترک هستند. این گزینه‌ها در systemd.exec(5)، systemd.kill(5) و systemd.resource-control(5) مستند شده‌اند. گزینه‌های مخصوص بخش [Socket] واحدهای سوکت به شرح زیر است:

ListenStream=, ListenDatagram=, ListenSequentialPacket=

آدرسی را برای گوش دادن به‌ترتیب برای یک سوکت جریانی (SOCK_STREAM)، دیتاگرام (SOCK_DGRAM)، یا بسته‌ای متوالی (SOCK_SEQPACKET) مشخص می‌کند. آدرس را می‌توان در قالب‌های گوناگونی نوشت:

اگر آدرس با یک ممیز ("/") شروع شود، به عنوان یک سوکت سیستم فایل در خانواده سوکت AF_UNIX خوانده می‌شود.

اگر آدرس با علامت اتساین ("@") شروع شود، به عنوان یک سوکت در فضای‌نام انتزاعی در خانواده AF_UNIX خوانده می‌شود. علامت "@" پیش از مقیدسازی با یک نویسه NUL جایگزین می‌شود. برای جزئیات، unix(7) را ببینید.

اگر رشته آدرس یک عدد منفرد باشد، به عنوان شماره درگاهی برای گوش دادن از طریق IPv6 خوانده می‌شود. بسته به مقدار BindIPv6Only= (به زیر مراجعه کنید) این ممکن است منجر به در دسترس بودن سرویس از طریق هر دو IPv6 و IPv4 (پیش‌فرض) یا فقط از طریق IPv6 شود.

اگر رشته آدرس رشته‌ای با قالب "v.w.x.y:z" باشد، به عنوان آدرس IPv4 با مقدار v.w.x.y و درگاه z تفسیر می‌شود.

اگر رشته آدرس رشته‌ای با قالب "[x]:y" باشد، به عنوان آدرس IPv6 با مقدار x و درگاه y تفسیر می‌شود. یک دامنه رابط اختیاری (نام رابط یا شماره آن) را می‌توان پس از یک نماد "%" مشخص کرد: "[x]:y%dev". دامنه‌های رابط فقط با آدرس‌های محلی پیوند مفید هستند، زیرا هسته در سایر موارد آن‌ها را نادیده می‌گیرد. توجه داشته باشید که اگر آدرسی به عنوان IPv6 مشخص شود، ممکن است همچنان بسته به تنظیم BindIPv6Only= (به زیر مراجعه کنید) سرویس را از طریق IPv4 نیز در دسترس قرار دهد.

اگر رشته آدرس رشته‌ای با قالب "vsock:x:y" باشد، به عنوان CID برابر با x روی آدرس درگاه y در خانواده AF_VSOCK خوانده می‌شود. شناسه CID یک شناسه عدد صحیح ۳۲ بیتی منحصر‌به‌فرد در AF_VSOCK مشابه با آدرس IP است. مشخص کردن CID اختیاری است و می‌تواند روی رشته خالی تنظیم شود. "vsock" را می‌توان با "vsock-stream"، "vsock-dgram" یا "vsock-seqpacket" جایگزین کرد تا استفاده از نوع سوکت متناظر اجباری شود.

توجه داشته باشید که SOCK_SEQPACKET (یعنی ListenSequentialPacket=) تنها برای سوکت‌های AF_UNIX در دسترس است. SOCK_STREAM (یعنی ListenStream=) هنگامی که برای سوکت‌های IP استفاده می‌شود به سوکت‌های TCP و SOCK_DGRAM (یعنی ListenDatagram=) به UDP اشاره دارد.

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

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

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

ListenFIFO=

یک FIFO سیستم فایل (برای جزئیات به fifo(7) مراجعه کنید) را برای گوش دادن مشخص می‌کند. این گزینه یک مسیر مطلق سیستم فایل را به عنوان آرگومان انتظار دارد. رفتار آن در غیر این صورت بسیار شبیه به دستور ListenDatagram= در بالا است.

ListenSpecial=

یک فایل ویژه در سیستم فایل را برای گوش دادن مشخص می‌کند. این گزینه یک مسیر مطلق سیستم فایل را به عنوان آرگومان انتظار دارد. رفتار آن در غیر این صورت بسیار شبیه به دستور ListenFIFO= در بالا است. از این گزینه برای باز کردن گره‌های دستگاه نویسه‌ای و همچنین فایل‌های ویژه در /proc/ و /sys/ استفاده کنید.

ListenNetlink=

یک خانواده Netlink را برای ایجاد سوکت جهت گوش دادن مشخص می‌کند. این گزینه یک رشته کوتاه اشاره‌کننده به نام خانواده AF_NETLINK (مانند audit یا kobject-uevent) را به عنوان آرگومان انتظار دارد، که اختیاری می‌تواند با یک فضای خالی و به دنبال آن یک عدد صحیح گروه چندپخشی پسوند یابد. رفتار آن در غیر این صورت بسیار شبیه به دستور ListenDatagram= در بالا است.

ListenMessageQueue=

نام یک صف پیام POSIX را برای گوش دادن مشخص می‌کند (برای جزئیات به mq_overview(7) مراجعه کنید). این گزینه یک نام معتبر صف پیام (یعنی شروع‌شونده با "/") را انتظار دارد. رفتار آن در غیر این صورت بسیار شبیه به دستور ListenFIFO= در بالا است. در لینوکس توصیف‌کننده‌های صف پیام در واقع توصیف‌کننده‌های فایل هستند و می‌توانند بین فرآیندها به ارث برسند.

ListenUSBFunction=

مکان نقاط پایانی USB FunctionFS[1] را برای گوش دادن، جهت پیاده‌سازی عملکردهای گجت USB مشخص می‌کند. این گزینه یک مسیر مطلق سیستم فایل از یک نقطه سوار کردن FunctionFS را به عنوان آرگومان انتظار دارد. رفتار آن در غیر این صورت بسیار شبیه به دستور ListenFIFO= در بالا است. از این گزینه برای باز کردن نقطه پایانی FunctionFS با نام ep0 استفاده کنید. هنگام استفاده از این گزینه، سرویس فعال‌شده باید گزینه‌های USBFunctionDescriptors= و USBFunctionStrings= را تنظیم کرده باشد.

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

SocketProtocol=

یکی از مقادیر udplite، sctp یا mptcp را می‌پذیرد. سوکت به‌ترتیب از پروتکل UDP-Lite (IPPROTO_UDPLITE)، پروتکل SCTP (IPPROTO_SCTP) یا پروتکل MPTCP (IPPROTO_MPTCP) استفاده خواهد کرد.

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

BindIPv6Only=

یکی از مقادیر default، both یا ipv6-only را می‌پذیرد. گزینه سوکت IPV6_V6ONLY را کنترل می‌کند (برای جزئیات به ipv6(7) مراجعه کنید). اگر روی both باشد، سوکت‌های IPv6 مقیدشده از طریق هر دو IPv4 و IPv6 قابل دسترسی خواهند بود. اگر روی ipv6-only باشد، آن‌ها تنها از طریق IPv6 قابل دسترسی خواهند بود. اگر روی default باشد (که پیش‌فرض است، شگفتا!)، از تنظیم پیش‌فرض سراسری سیستم استفاده می‌شود، همان‌طور که توسط /proc/sys/net/ipv6/bindv6only کنترل می‌شود، که آن هم به نوبه خود به‌طور پیش‌فرض معادل both است.

Backlog=

یک آرگومان عدد صحیح ۳۲ بیتی بدون علامت می‌پذیرد. تعداد اتصالاتی را که هنوز پذیرفته نشده‌اند و در صف قرار می‌گیرند مشخص می‌کند. این تنظیم تنها برای سوکت‌های جریانی و بسته‌ای متوالی اهمیت دارد. برای جزئیات به listen(2) مراجعه کنید. مقدار پیش‌فرض 4294967295 است. توجه داشته باشید که این مقدار به‌طور ضمنی توسط sysctl با نام "net.core.somaxconn" محدود می‌شود، که معمولاً مقدار پیش‌فرض 4096 دارد، بنابراین معمولاً این مقدار sysctl است که در عمل اهمیت دارد.

BindToDevice=

نام یک رابط شبکه را برای مقید کردن این سوکت به آن مشخص می‌کند. در صورت تنظیم، ترافیک تنها از رابط‌های شبکه مشخص‌شده پذیرفته خواهد شد. این گزینه سوکت SO_BINDTODEVICE را کنترل می‌کند (برای جزئیات به socket(7) مراجعه کنید). اگر از این گزینه استفاده شود، یک وابستگی ضمنی از این واحد سوکت نسبت به واحد دستگاه رابط شبکه ایجاد می‌شود (به systemd.device(5) مراجعه کنید). توجه داشته باشید که تنظیم این پارامتر ممکن است منجر به اضافه شدن وابستگی‌های اضافی به واحد شود (به بالا مراجعه کنید).

SocketUser=, SocketGroup=

نام یک کاربر/گروه یونیکس را می‌پذیرد. در صورت تعیین، مالکیت تمام سوکت‌های AF_UNIX، گره‌های FIFO و صف‌های پیام متعلق به کاربر و گروه مشخص‌شده خواهد بود. اگر تنظیم نشود (پیش‌فرض)، گره‌ها متعلق به کاربر/گروه root خواهند بود (اگر در زمینه سیستمی اجرا شود) یا متعلق به کاربر/گروه فراخواننده (اگر در زمینه کاربری اجرا شود). اگر فقط یک کاربر مشخص شود اما هیچ گروهی مشخص نشود، آنگاه گروه از گروه پیش‌فرض کاربر مشتق می‌شود.

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

SocketMode=

در صورت گوش دادن روی یک سوکت سیستم فایل، FIFO یا صف پیام، این گزینه حالت دسترسی به سیستم فایل را که هنگام ایجاد گره فایل استفاده می‌شود مشخص می‌کند. یک حالت دسترسی را در نمادگذاری هشت‌هشتی می‌پذیرد. مقدار پیش‌فرض 0666 است.

DirectoryMode=

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

Accept=

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

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

سرویسی که روی یک سوکت AF_UNIX گوش می‌دهد می‌تواند، اما نیازی ندارد که، پیش از خروج تابع close(2) را روی سوکت دریافت‌شده فراخوانی کند. با این حال، نباید پیوند سوکت را از سیستم فایل لغو کند. نباید shutdown(2) را روی سوکت‌هایی که با Accept=no دریافت کرده است فراخوانی کند، اما می‌تواند این کار را برای سوکت‌هایی که با تنظیم Accept=yes دریافت کرده انجام دهد.

تنظیم Accept=yes به‌ویژه برای اجازه دادن به دیمن‌هایی که برای استفاده با inetd(8) طراحی شده‌اند تا بدون تغییر با فعال‌سازی سوکت systemd کار کنند بسیار مفید است.

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

برای اتصالات IPv4 و IPv6، متغیر محیطی $REMOTE_ADDR شامل آدرس IP راه دور خواهد بود و $REMOTE_PORT شامل شماره درگاه راه دور خواهد بود. این دو متغیر متناظر با متغیرهای تعریف‌شده توسط واسط CGI برای سرویس‌های وب هستند (به RFC 3875[2] مراجعه کنید).

برای اتصالات سوکت AF_UNIX، متغیر محیطی $REMOTE_ADDR یا شامل مسیر سیستم فایل سوکت راه دور که با یک ممیز ("/") شروع می‌شود خواهد بود یا شامل آدرس آن در فضای‌نام انتزاعی که با علامت اتساین ("@") شروع می‌شود. اگر سوکت بدون نام باشد، $REMOTE_ADDR تنظیم نخواهد شد.

اگر Accept=yes استفاده شود، فرآیند سرویس فعال‌شده متغیر محیطی $SO_COOKIE را برابر با کوکی سوکت لینوکس، قالب‌بندی‌شده به صورت یک عدد صحیح ده‌دهی، تنظیم خواهد کرد. کوکی سوکت در غیر این صورت می‌تواند از طریق getsockopt(7) به دست آید.

توصیه می‌شود CollectMode=inactive-or-failed را برای نمونه‌های سرویس فعال‌شده از طریق Accept=yes تنظیم کنید تا اطمینان حاصل شود که سرویس‌های اتصال ناموفق پاک‌سازی شده و از حافظه آزاد می‌شوند و انباشته نمی‌گردند.

Writable=

یک آرگومان بولی می‌پذیرد. فقط می‌تواند در ترکیب با ListenSpecial= استفاده شود. اگر true باشد، فایل ویژه مشخص‌شده در حالت خواندن-نوشتن باز می‌شود؛ اگر false باشد، در حالت فقط‌خواندنی باز می‌شود. مقدار پیش‌فرض false است.

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

FlushPending=

یک آرگومان بولی می‌پذیرد. فقط زمانی می‌تواند استفاده شود که Accept=no باشد. اگر yes باشد، بافرهای سوکت پس از خروج سرویس راه‌اندازی‌شده پاک می‌شوند. این کار باعث می‌شود هرگونه داده معلق پاک شود و هرگونه اتصال ورودی معلق رد گردد. اگر no باشد، بافرهای سوکت پاک نخواهند شد و به سرویس اجازه داده می‌شود پس از راه‌اندازی مجدد، اتصالات معلق را پردازش کند که رفتار معمولاً مورد انتظار است. مقدار پیش‌فرض no است.

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

MaxConnections=

حداکثر تعداد اتصالاتی که در هنگام تنظیم Accept=yes می‌توان به‌طور همزمان نمونه‌های سرویس را برای آن‌ها اجرا کرد. اگر اتصالات همزمان بیشتری وارد شوند، تا زمانی که حداقل یک اتصال موجود خاتمه یابد، رد خواهند شد. این تنظیم هیچ تأثیری بر سوکت‌های پیکربندی‌شده با Accept=no یا سوکت‌های دیتاگرام ندارد. مقدار پیش‌فرض 64 است.

MaxConnectionsPerSource=

حداکثر تعداد اتصالات برای یک سرویس به ازای هر آدرس IP مبدأ (در مورد IPv4/IPv6)، به ازای هر CID مبدأ (در مورد AF_VSOCK)، یا به ازای هر UID مبدأ (در مورد AF_UNIX). این دستور بسیار شبیه به دستور MaxConnections= در بالا است. مقدار پیش‌فرض 0 است، یعنی غیرفعال است.

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

KeepAlive=

یک آرگومان بولی می‌پذیرد. اگر true باشد، پشته TCP/IP پس از ۲ ساعت (بسته به پیکربندی /proc/sys/net/ipv4/tcp_keepalive_time) یک پیام زنده نگه‌داشتن برای تمام جریان‌های TCP پذیرفته‌شده روی این سوکت ارسال می‌کند. این گزینه سوکت SO_KEEPALIVE را کنترل می‌کند (برای جزئیات به socket(7) و TCP Keepalive HOWTO[3] مراجعه کنید). مقدار پیش‌فرض false است.

KeepAliveTimeSec=

زمان (به ثانیه) را به عنوان آرگومان می‌پذیرد. مدت زمانی که اتصال باید پیش از شروع ارسال کاوش‌های زنده نگه‌داشتن توسط TCP بیکار بماند. این گزینه سوکت TCP_KEEPIDLE را کنترل می‌کند (برای جزئیات به socket(7) و TCP Keepalive HOWTO[3] مراجعه کنید). مقدار پیش‌فرض 7200 ثانیه (۲ ساعت) است.

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

KeepAliveIntervalSec=

زمان (به ثانیه) را به عنوان آرگومان بین هر یک از کاوش‌های زنده نگه‌داشتن می‌پذیرد، در صورتی که گزینه سوکت SO_KEEPALIVE روی این سوکت تنظیم شده باشد. این گزینه سوکت TCP_KEEPINTVL را کنترل می‌کند (برای جزئیات به socket(7) و TCP Keepalive HOWTO[3] مراجعه کنید). مقدار پیش‌فرض 75 ثانیه است.

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

KeepAliveProbes=

یک عدد صحیح را به عنوان آرگومان می‌پذیرد. تعداد کاوش‌های تأییدن‌شده‌ای است که باید پیش از مرده در نظر گرفتن اتصال و اطلاع‌رسانی به لایه کاربرد ارسال شود. این گزینه سوکت TCP_KEEPCNT را کنترل می‌کند (برای جزئیات به socket(7) و TCP Keepalive HOWTO[3] مراجعه کنید). مقدار پیش‌فرض 9 است.

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

NoDelay=

یک آرگومان بولی می‌پذیرد. الگوریتم نیگل در TCP با ترکیب تعدادی از پیام‌های خروجی کوچک و ارسال یکجای همه آن‌ها کار می‌کند. این گزینه سوکت TCP_NODELAY را کنترل می‌کند (به tcp(7) مراجعه کنید). مقدار پیش‌فرض false است.

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

Priority=

یک آرگومان عدد صحیح برای کنترل اولویت تمام ترافیک ارسال‌شده از این سوکت می‌پذیرد. این گزینه سوکت SO_PRIORITY را کنترل می‌کند (برای جزئیات به socket(7) مراجعه کنید).

DeferAcceptSec=

زمان (به ثانیه) را به عنوان آرگومان می‌پذیرد. در صورت تنظیم، فرآیند شنونده تنها زمانی بیدار می‌شود که داده‌ها روی سوکت وارد شوند، نه بلافاصله پس از برقراری اتصال. هنگامی که این گزینه تنظیم شود، از گزینه سوکت TCP_DEFER_ACCEPT استفاده خواهد شد (به tcp(7) مراجعه کنید)، و هسته بسته‌های اولیه ACK فاقد هرگونه داده را نادیده می‌گیرد. این آرگومان مقدار تقریبی زمانی را که هسته باید پیش از بازگشت به رفتار عادی پذیرش بسته‌های ACK خالی منتظر داده‌های ورودی بماند مشخص می‌کند. این گزینه برای پروتکل‌هایی که در آن‌ها کارخواه ابتدا داده‌ها را ارسال می‌کند (مانند HTTP، بر خلاف SMTP) سودمند است، زیرا فرآیند کارساز پیش از آنکه بتواند اقدامی انجام دهد، بیهوده بیدار نمی‌شود.

اگر کارخواه نیز از گزینه TCP_DEFER_ACCEPT استفاده کند، ممکن است تأخیر اتصال اولیه کاهش یابد، زیرا هسته در بسته نهایی برقرارکننده اتصال (بسته سوم در دست‌تکانی سه‌مرحله‌ای) داده‌ها را ارسال خواهد کرد.

به‌طور پیش‌فرض غیرفعال است.

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

ReceiveBuffer=, SendBuffer=

یک آرگومان عدد صحیح را برای کنترل اندازه‌های بافر دریافت یا ارسال این سوکت، به‌ترتیب، می‌پذیرد. این گزینه‌های سوکت SO_RCVBUF و SO_SNDBUF را کنترل می‌کند (برای جزئیات به socket(7) مراجعه کنید). پسوندهای معمول K، M، G پشتیبانی می‌شوند و بر مبنای 1024 درک می‌گردند.

IPTOS=

یک آرگومان عدد صحیح را برای کنترل فیلد نوع خدمت IP برای بسته‌های تولیدشده از این سوکت می‌پذیرد. این گزینه سوکت IP_TOS را کنترل می‌کند (برای جزئیات به ip(7) مراجعه کنید). می‌توان یک رشته عددی یا یکی از مقادیر low-delay، throughput، reliability یا low-cost را مشخص کرد.

IPTTL=

یک آرگومان عدد صحیح را برای کنترل فیلد طول عمر IPv4 / شمارش جهش IPv6 برای بسته‌های تولیدشده از این سوکت می‌پذیرد. این گزینه‌های سوکت IP_TTL/IPV6_UNICAST_HOPS را تنظیم می‌کند (برای جزئیات به ip(7) و ipv6(7) مراجعه کنید).

Mark=

یک مقدار عدد صحیح می‌پذیرد. نشان دیوار آتش بسته‌های تولیدشده توسط این سوکت را کنترل می‌کند. این می‌تواند در منطق دیوار آتش برای فیلتر کردن بسته‌های حاصل از این سوکت استفاده شود. این گزینه سوکت SO_MARK را تنظیم می‌کند. برای جزئیات به iptables(8) مراجعه کنید.

ReusePort=

یک مقدار بولی می‌پذیرد. اگر true باشد، به چندین bind(2) روی این درگاه TCP یا UDP اجازه می‌دهد. این گزینه سوکت SO_REUSEPORT را کنترل می‌کند. برای جزئیات به socket(7) مراجعه کنید.

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

SmackLabel=, SmackLabelIPIn=, SmackLabelIPOut=

یک مقدار رشته‌ای می‌پذیرد. ویژگی‌های گسترش‌یافته "security.SMACK64"، "security.SMACK64IPIN" و "security.SMACK64IPOUT" را به‌ترتیب کنترل می‌کند، یعنی برچسب امنیتی FIFO، یا برچسب امنیتی برای اتصالات ورودی یا خروجی سوکت به‌ترتیب. برای جزئیات به Smack[4] مراجعه کنید.

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

SELinuxContextFromNet=

یک آرگومان بولی می‌پذیرد. وقتی true باشد، systemd تلاش خواهد کرد برچسب SELinux استفاده‌شده برای سرویس نمونه‌سازی‌شده را از روی اطلاعات ارائه‌شده توسط طرف مقابل از طریق شبکه تشخیص دهد. توجه داشته باشید که از اطلاعات ارائه‌شده توسط همتا فقط سطح امنیت استفاده می‌شود. سایر بخش‌های زمینه SELinux حاصل یا از باینری هدف که عملاً توسط واحد سوکت راه‌اندازی شده است، یا از مقدار گزینه SELinuxContext= سرچشمه می‌گیرند. این گزینه پیکربندی تنها زمانی اعمال می‌شود که به سرویس فعال‌شده یک توصیف‌کننده فایل سوکت منفرد منتقل شود، یعنی نمونه‌های سرویسی که ورودی استاندارد متصل به یک سوکت دارند یا سرویس‌هایی که دقیقاً توسط یک واحد سوکت راه‌اندازی شده‌اند. همچنین توجه داشته باشید که این گزینه تنها زمانی مفید است که سیاست SELinux از نوع MLS/MCS مستقر شده باشد. مقدار پیش‌فرض "false" است.

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

PipeSize=

اندازه‌ای بر حسب بایت می‌پذیرد. اندازه بافر لوله را برای FIFOهای پیکربندی‌شده در این واحد سوکت کنترل می‌کند. برای جزئیات به fcntl(2) مراجعه کنید. پسوندهای معمول K، M، G پشتیبانی می‌شوند و بر مبنای 1024 درک می‌گردند.

MessageQueueMaxMessages=, MessageQueueMessageSize=

این دو تنظیم مقادیر عدد صحیح می‌پذیرند و به‌ترتیب فیلد mq_maxmsg یا فیلد mq_msgsize را هنگام ایجاد صف پیام کنترل می‌کنند. توجه داشته باشید که یا هیچ‌کدام یا هر دوی این متغیرها باید تنظیم شوند. برای جزئیات به mq_setattr(3) مراجعه کنید.

FreeBind=

یک مقدار بولی می‌پذیرد. این که آیا سوکت می‌تواند به آدرس‌های IP غیرمحلی مقید شود یا خیر را کنترل می‌کند. این برای پیکربندی سوکت‌های شنونده روی آدرس‌های IP خاص پیش از آنکه آن آدرس‌های IP با موفقیت روی یک رابط شبکه پیکربندی شوند مفید است. این گزینه سوکت IP_FREEBIND/IPV6_FREEBIND را تنظیم می‌کند. به دلایل تاب‌آوری و پایداری توصیه می‌شود هر زمان که سوکتی را به یک آدرس IP خاص مقید می‌کنید از این گزینه استفاده نمایید. مقدار پیش‌فرض false است.

Transparent=

یک مقدار بولی می‌پذیرد. گزینه سوکت IP_TRANSPARENT/IPV6_TRANSPARENT را کنترل می‌کند. مقدار پیش‌فرض false است.

Broadcast=

یک مقدار بولی می‌پذیرد. این گزینه سوکت SO_BROADCAST را کنترل می‌کند، که به دیتاگرام‌های همگانی اجازه می‌دهد از این سوکت ارسال شوند. مقدار پیش‌فرض false است.

PassCredentials=

یک مقدار بولی می‌پذیرد. این گزینه سوکت SO_PASSCRED را کنترل می‌کند، که به سوکت‌های AF_UNIX اجازه می‌دهد اطلاعات هویتی فرآیند فرستنده را در یک پیام کمکی دریافت کنند. مقدار پیش‌فرض false است.

PassPIDFD=

یک مقدار بولی می‌پذیرد. این گزینه سوکت SO_PASSPIDFD را کنترل می‌کند، که به سوکت‌های AF_UNIX اجازه می‌دهد pidfd فرآیند فرستنده را در یک پیام کمکی دریافت کنند. مقدار پیش‌فرض false است.

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

PassSecurity=

یک مقدار بولی می‌پذیرد. این گزینه سوکت SO_PASSSEC را کنترل می‌کند، که به سوکت‌های AF_UNIX اجازه می‌دهد زمینه امنیتی فرآیند فرستنده را در یک پیام کمکی دریافت کنند. مقدار پیش‌فرض false است.

PassPacketInfo=

یک مقدار بولی می‌پذیرد. این گزینه‌های سوکت IP_PKTINFO، IPV6_RECVPKTINFO، NETLINK_PKTINFO یا PACKET_AUXDATA را کنترل می‌کند، که دریافت فراداده‌های اضافی به ازای هر بسته را به صورت پیام کمکی، روی سوکت‌های AF_INET، AF_INET6، AF_UNIX و AF_PACKET فعال می‌سازد. مقدار پیش‌فرض false است.

در نسخه ۲۴۶ اضافه شد.

AcceptFileDescriptors=

یک مقدار بولی می‌پذیرد. این گزینه سوکت SO_PASSRIGHTS را کنترل می‌کند، که در صورت غیرفعال بودن، طرف مقابل را از ارسال پیام‌های کمکی SCM_RIGHTS (همان توصیف‌کننده‌های فایل) از طریق سوکت‌های AF_UNIX منع می‌کند. مقدار پیش‌فرض true است.

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

Timestamping=

یکی از مقادیر "off"، "us" (نام مستعار: "usec"، "μs") یا "ns" (نام مستعار: "nsec") را می‌پذیرد. این گزینه‌های سوکت SO_TIMESTAMP یا SO_TIMESTAMPNS را کنترل می‌کند، و فعال می‌سازد که آیا ترافیک ورودی شبکه باید فراداده برچسب زمانی را به همراه داشته باشد یا خیر. مقدار پیش‌فرض off است.

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

TCPCongestion=

یک مقدار رشته‌ای می‌پذیرد. الگوریتم ازدحام TCP استفاده‌شده توسط این سوکت را کنترل می‌کند. باید یکی از مقادیر "westwood"، "reno"، "cubic"، "lp" یا هر الگوریتم در دسترس دیگری باشد که توسط پشته IP پشتیبانی می‌شود. این تنظیم تنها برای سوکت‌های جریانی اعمال می‌شود.

ExecStartPre=, ExecStartPost=

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

ExecStopPre=, ExecStopPost=

دستورات اضافی که به‌ترتیب قبل یا بعد از بسته شدن و حذف سوکت‌ها/FIFOهای شنونده اجرا می‌شوند. چندین خط دستور را می‌توان با پیروی از همان شیوه‌ای که برای ExecStartPre= در فایل‌های واحد سرویس استفاده می‌شود مشخص کرد.

TimeoutSec=

مدت زمان انتظار برای پایان یافتن دستورات مشخص‌شده در ExecStartPre=، ExecStartPost=، ExecStopPre= و ExecStopPost= را پیکربندی می‌کند. اگر دستوری در مدت زمان پیکربندی‌شده خارج نشود، سوکت ناموفق در نظر گرفته شده و مجدداً خاموش می‌شود. تمام دستوراتی که هنوز در حال اجرا هستند به اجبار از طریق SIGTERM خاتمه می‌یابند، و پس از تأخیر دیگری به همین میزان با SIGKILL. (به KillMode= در systemd.kill(5) مراجعه کنید). مقداری بدون واحد به ثانیه، یا مقداری با بازه زمانی مانند "5min 20s" می‌پذیرد. برای غیرفعال کردن منطق مهلت زمانی، "0" را بدهید. مقدار پیش‌فرض برابر با DefaultTimeoutStartSec= از فایل پیکربندی مدیر است (به systemd-system.conf(5) مراجعه کنید).

Service=

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

RemoveOnStop=

یک آرگومان بولی می‌پذیرد. در صورت فعال بودن، هرگونه گره فایلی که توسط این واحد سوکت ایجاد شده است با متوقف شدن آن حذف می‌شود. این در مورد سوکت‌های AF_UNIX در سیستم فایل، صف‌های پیام POSIX، FIFOها، و همچنین هرگونه پیوند نمادین به آن‌ها که با Symlinks= پیکربندی شده است اعمال می‌شود. معمولاً استفاده از این گزینه نباید ضروری باشد و توصیه نمی‌شود، زیرا سرویس‌ها ممکن است پس از خاتمه واحد سوکت همچنان به اجرا ادامه دهند و باید همچنان بتوان از طریق گره سیستم فایل با آن‌ها ارتباط برقرار کرد. مقدار پیش‌فرض off است.

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

Symlinks=

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

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

FileDescriptorName=

نامی را به تمام توصیف‌کننده‌های فایلی که این واحد سوکت کپسوله‌سازی می‌کند اختصاص می‌دهد. این برای کمک به سرویس‌های فعال‌شده در شناسایی توصیف‌کننده‌های فایل خاص در صورتی که چندین توصیف‌کننده منتقل شوند مفید است. سرویس‌ها می‌توانند از فراخوانی sd_listen_fds_with_names(3) برای به دست آوردن نام‌های پیکربندی‌شده برای توصیف‌کننده‌های فایل دریافت‌شده استفاده کنند. نام‌ها ممکن است شامل هر نویسه ASCII باشند، اما باید نویسه‌های کنترلی و ":" را حذف کنند، و باید حداکثر ۲۵۵ نویسه طول داشته باشند. اگر از این تنظیم استفاده نشود، نام توصیف‌کننده فایل در صورت Accept=no به‌طور پیش‌فرض همان نام واحد سوکت (شامل پسوند .socket آن) خواهد بود، و در غیر این صورت "connection" است.

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

TriggerLimitIntervalSec=, TriggerLimitBurst=

محدودیتی را برای این که این واحد سوکت در یک بازه زمانی خاص چند بار می‌تواند فعال شود پیکربندی می‌کند. تنظیم TriggerLimitIntervalSec= می‌تواند برای پیکربندی طول بازه زمانی با واحدهای زمانی معمول "us"، "ms"، "s"، "min"، "h" و ... استفاده شود و مقدار پیش‌فرض آن 2s است (برای جزئیات درباره واحدهای زمانی مختلفِ قابل فهم به systemd.time(7) مراجعه کنید). تنظیم TriggerLimitBurst= یک مقدار عدد صحیح مثبت می‌پذیرد و تعداد فعال‌سازی‌های مجاز در هر بازه زمانی را مشخص می‌کند، و مقدار پیش‌فرض آن برای سوکت‌های با Accept=yes برابر با 200 است (بنابراین به‌طور پیش‌فرض ۲۰۰ فعال‌سازی در هر ۲ ثانیه را مجاز می‌داند)، و در غیر این صورت 20 است (۲۰ فعال‌سازی در هر ۲ ثانیه). هر کدام را روی 0 قرار دهید تا هرگونه محدودیت نرخ راه‌اندازی غیرفعال شود.

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

این را با PollLimitIntervalSec=/PollLimitBurst= که در زیر توضیح داده شده مقایسه کنید، که در صورتی که یک واحد سوکت با ترافیک ورودی سرریز شود، یک کندسازی موقت را پیاده‌سازی می‌کند، بر خلاف وضعیت خرابی دائمی که TriggerLimitIntervalSec=/TriggerLimitBurst= به بار می‌آورد.

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

PollLimitIntervalSec=, PollLimitBurst=

محدودیتی را برای اینکه رویدادهای نظرسنجی روی توصیف‌کننده‌های فایل پشتیبان این واحد سوکت با چه تناوبی مورد بررسی قرار گیرند پیکربندی می‌کند. این جفت تنظیمات شبیه به TriggerLimitIntervalSec=/TriggerLimitBurst= هستند، اما به جای اعمال یک محدودیت (مهلک) بر بسامد فعال‌سازی، یک محدودیت (گذرا) بر بسامد نظرسنجی اعمال می‌کنند. نحو و دامنه پارامترهای مورد انتظار با گزینه‌های پیش‌گفته یکسان است و می‌توان آن را به همان شیوه غیرفعال کرد.

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

محدودیت نظرسنجی به ازای هر توصیف‌کننده فایل برای گوش دادن اعمال می‌شود، بر خلاف محدودیت راه‌اندازی که برای کل واحد سوکت اعمال می‌گردد. این تمایز برای واحدهای سوکتی اهمیت دارد که روی چندین توصیف‌کننده فایل گوش می‌دهند (یعنی دارای چندین بند ListenXYZ= هستند).

این تنظیمات به‌طور پیش‌فرض برابر با 150 رویداد نظرسنجی در هر ۲ ثانیه (در حالت Accept=yes) و 15 رویداد (در غیر این صورت) است. این مقدار به‌طور قابل توجهی پایین‌تر از مقادیر پیش‌فرض برای محدودیت راه‌اندازی است (به بالا مراجعه کنید) و بدان معناست که محدودیت نظرسنجی معمولاً باید اطمینان حاصل کند که محدودیت راه‌اندازی هرگز پر نمی‌شود، مگر اینکه یکی از آن‌ها بازپیکربندی یا غیرفعال شود.

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

DeferTrigger=

یک آرگومان بولی، یا "patient" را می‌پذیرد. فقط زمانی می‌تواند استفاده شود که Accept=no باشد. در صورت فعال بودن، حالت کار "lenient" به جای "replace" هنگام راه‌اندازی سرویس استفاده می‌شود، که بدان معناست واحدهای در حال فعال‌سازی/در حال اجرای فعلی که با این سرویس در تضاد هستند دچار اختلال/توقف نخواهند شد. علاوه بر این، اگر تضادی وجود داشته باشد، واحد سوکت منتظر می‌ماند تا صف کارهای فعلی کامل شود و احتمالاً فعال‌سازی را تا آن زمان به تعویق می‌اندازد. حد بالای کل زمان انتظار می‌تواند از طریق DeferTriggerMaxSec= پیکربندی شود. اگر روی yes تنظیم شود، در صورتی که تمام کارها به پایان رسیده باشند یا مهلت زمانی به سر رسیده باشد اما تضاد همچنان باقی مانده باشد، واحد سوکت شکست خواهد خورد. اگر patient باشد، همیشه تا سپری شدن DeferTriggerMaxSec= منتظر می‌ماند. مقدار پیش‌فرض no است.

این تنظیم به‌ویژه در صورتی مفید است که واحد سوکت باید در طول عملیات switch-root/soft-reboot در حالی که سرویس راه‌اندازی‌شده متوقف است فعال بماند.

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

DeferTriggerMaxSec=

حداکثر زمان برای به تعویق انداختن راه‌اندازی را در هنگام فعال بودن DeferTrigger= پیکربندی می‌کند. اگر سرویس نتواند در مدت زمان مشخص‌شده فعال شود، سوکت ناموفق در نظر گرفته شده و خاتمه می‌یابد. مقداری بدون واحد به ثانیه، یا مقداری با بازه زمانی مانند "5min 20s" می‌پذیرد. برای غیرفعال کردن منطق مهلت زمانی (پیش‌فرض)، "0" یا "infinity" را بدهید.

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

PassFileDescriptorsToExec=

یک آرگومان بولی می‌پذیرد. مقدار پیش‌فرض off است. در صورت فعال بودن، توصیف‌کننده‌های فایل ایجادشده توسط واحد سوکت به دستورات ExecStartPost=، ExecStopPre= و ExecStopPost= از واحد سوکت منتقل می‌شوند. توصیف‌کننده‌های فایل منتقل‌شده می‌توانند با sd_listen_fds(3) به گونه‌ای مورد دسترسی قرار گیرند که گویی دستورات از واحدهای سرویس مرتبط فراخوانی شده‌اند. توجه داشته باشید که دستور ExecStartPre= نمی‌تواند به توصیف‌کننده‌های فایل سوکت دسترسی پیدا کند.

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

برای تنظیمات بیشتر، systemd.unit(5)، systemd.exec(5) و systemd.kill(5) را بررسی کنید.

systemd(1), systemctl(1), systemd-system.conf(5), systemd.unit(5), systemd.exec(5), systemd.kill(5), systemd.resource-control(5), systemd.service(5), systemd.directives(7), sd_listen_fds(3), sd_listen_fds_with_names(3)

برای توضیحات جامع‌تر، مجموعه مقالات «systemd برای توسعه‌دهندگان» را ببینید: Socket Activation[5], Socket Activation, part II[6], Converting inetd Services[7], Socket Activated Internet Services and OS Containers[8].

1.
USB FunctionFS
2.
RFC 3875
3.
TCP Keepalive HOWTO
4.
Smack
5.
Socket Activation
6.
Socket Activation, part II
7.
Converting inetd Services
8.
Socket Activated Internet Services and OS Containers
systemd 261.2