table of contents
| 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)، والتي تُهيئ إعدادات التحكم بالموارد لعمليات المقبس.
لكل وحدة مقبس، يجب وجود وحدة خدمة مطابقة، تصف الخدمة التي ستبدأ عند حركة المرور الواردة على المقبس (انظر systemd.service(5) لمزيد من المعلومات حول وحدات .service). اسم وحدة .service هو مبدئيًا نفس اسم وحدة .socket، لكن يمكن تغييره بخيار Service= الموصوف أدناه. اعتمادًا على إعداد خيار Accept= الموصوف أدناه، يجب أن تُسمى وحدة .service هذه إما مثل وحدة .socket، لكن مع استبدال اللاحقة، ما لم تُتجاوز بـ Service=؛ أو يجب أن تكون وحدة قالب بنفس الاسم. مثال: ملف مقبس foo.socket يحتاج خدمة مطابقة foo.service إذا عُين Accept=no. إذا عُين 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) للتفاصيل.
اعتمادات آلية¶
التبعيات الضمنية¶
تُضاف التبعيات التالية ضمنيًا:
قد تُضاف اعتماديات ضمنية إضافية نتيجةً لمعاملات التنفيذ والتحكم في الموارد كما وُثقت في systemd.exec(5) و systemd.resource-control(5).
الاعتمادات المبدئية¶
تُضاف الاعتماديات التالية ما لم يُضبط DefaultDependencies=no:
الخيارات¶
ملفات وحدات المقبس قد تتضمن قسمي [Unit] و[Install]، الموصوفين في systemd.unit(5).
ملفات وحدات المقبس يجب أن تتضمن قسم [Socket]، الذي يحمل معلومات حول المقبس أو FIFO الذي تشرف عليه. عدد من الخيارات التي قد تُستخدم في هذا القسم مشتركة مع أنواع وحدات أخرى. هذه الخيارات موثقة في systemd.exec(5) وsystemd.kill(5) وsystemd.resource-control(5). الخيارات الخاصة بقسم [Socket] لوحدات المقبس هي التالية:
ListenStream=, ListenDatagram=, ListenSequentialPacket=
إذا بدأ العنوان بشرطة مائلة ("/")، يُقرأ كمقبس نظام ملفات في عائلة مقابس 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، فقد يظل يجعل الخدمة متاحة عبر IPv4 أيضًا، اعتمادًا على إعداد BindIPv6Only= (انظر أدناه).
إذا كانت سلسلة العنوان سلسلة بالتنسيق "vsock:x:y"، فتُقرأ كـ CID x على منفذ y في عائلة AF_VSOCK. CID هو معرف عدد صحيح فريد 32 بت في 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=
ListenSpecial=
ListenNetlink=
ListenMessageQueue=
ListenUSBFunction=
أُضيف في الإصدارة 227.
SocketProtocol=
أُضيف في الإصدارة 229.
BindIPv6Only=
Backlog=
BindToDevice=
SocketUser=, SocketGroup=
أُضيف في الإصدارة 214.
SocketMode=
DirectoryMode=
Accept=
عادةً، للخدمات الحساسة للأداء، يُفضل اختيار Accept=no، لأن بهذه الطريقة سيتحمل الاتصال الأول فقط تكلفة موارد التنشيط. من ناحية أخرى، للخدمات المُستخدمة بشكل متقطع، يمكن أن يكون Accept=yes مفضلاً لأنه يُبسط التنفيذ (حيث أن كود برنامج الخدمة يحتاج فقط لمعالجة اتصال واحد بدلاً من التعامل مع عدة اتصالات) ويُمكّن أمانًا أقوى (حيث يمكن استخدام خيارات العزل (sandboxing) المختلفة لعزل الاتصالات المتوازية عن بعضها البعض، حيث يُخدم كل اتصال بواسطة مثيل خدمة وعملية منفصلين).
خدمة تستمع على مقبس AF_UNIX قد، ولكن لا تحتاج إلى، استدعاء close(2) على المقبس المُستقبل قبل الخروج. ومع ذلك، يجب ألا تفصل (unlink) المقبس من نظام الملفات. يجب ألا تستدعي shutdown(2) على المقابس التي حصلت عليها مع Accept=no، ولكن قد تفعل ذلك للمقابس التي حصلت عليها مع تعيين Accept=yes.
تعيين Accept=yes مفيد بشكل خاص للسماح للشياطين (daemons) المُصممة للاستخدام مع inetd(8) بالعمل دون تعديل مع تنشيط مقبس systemd.
لاحظ أنه اعتمادًا على هذا الإعداد، فإن الخدمات المُنشطة بواسطة وحدات من هذا النوع إما خدمات عادية (في حالة Accept=no) أو مثيلات لخدمات مُقوْلبة (في حالة Accept=yes). راجع قسم الوصف أعلاه لمناقشة أكثر تفصيلاً لقواعد تسمية الخدمات المُحفزة.
لاتصالات IPv4 و IPv6، سيحتوي متغير البيئة $REMOTE_ADDR على عنوان IP البعيد، وسيحتوي $REMOTE_PORT على رقم المنفذ البعيد. يتوافق هذان المتغيران مع تلك المُعرّفة بواجهة CGI لخدمات الويب (انظر RFC 3875[2]).
لاتصالات مقبس AF_UNIX، سيحتوي متغير البيئة $REMOTE_ADDR إما على مسار نظام الملفات للمقبس البعيد بدءًا بشرطة مائلة ("/") أو عنوانه في الفضاء المجرد (abstract namespace) بدءًا برمز "@". إذا كان المقبس غير مُسمى، فلن يُعيّن $REMOTE_ADDR.
إذا استُخدم Accept=yes، فستكون عملية الخدمة المُنشطة قد عيّنت متغير البيئة $SO_COOKIE إلى كعكة مقبس Linux، مُنسقة كعدد صحيح عشري. يمكن الحصول على كعكة المقبس بخلاف ذلك عبر getsockopt(7).
يُوصى بتعيين CollectMode=inactive-or-failed لمثيلات الخدمة المُنشطة عبر Accept=yes، لضمان تنظيف خدمات الاتصال الفاشلة وتحريرها من الذاكرة، وعدم تراكمها.
Writable=
أُضيف في الإصدارة 227.
FlushPending=
أُضيف في الإصدار 247.
MaxConnections=
MaxConnectionsPerSource=
أُضيف في الإصدار 232.
KeepAlive=
KeepAliveTimeSec=
أُضيف في الإصدارة 216.
KeepAliveIntervalSec=
أُضيف في الإصدارة 216.
KeepAliveProbes=
أُضيف في الإصدارة 216.
NoDelay=
أُضيف في الإصدارة 216.
Priority=
DeferAcceptSec=
إذا استخدم العميل أيضًا خيار TCP_DEFER_ACCEPT، فقد ينخفض زمن الوصول للاتصال الأولي، لأن النواة سترسل البيانات في الحزمة الأخيرة التي تؤسس الاتصال (الحزمة الثالثة في "المصافحة الثلاثية").
معطل مبدئيًا.
أُضيف في الإصدارة 216.
ReceiveBuffer=, SendBuffer=
IPTOS=
IPTTL=
Mark=
ReusePort=
أُضيف في الإصدارة 206.
SmackLabel=, SmackLabelIPIn=, SmackLabelIPOut=
أُضيف في الإصدارة 196.
SELinuxContextFromNet=
أُضيف في الإصدارة 217.
PipeSize=
MessageQueueMaxMessages=, MessageQueueMessageSize=
FreeBind=
Transparent=
Broadcast=
PassCredentials=
PassPIDFD=
أُضيف في الإصدار 258.
PassSecurity=
PassPacketInfo=
أُضيف في الإصدار 246.
AcceptFileDescriptors=
أُضيف في الإصدار 258.
Timestamping=
أُضيف في الإصدار 247.
TCPCongestion=
ExecStartPre=، ExecStartPost=
ExecStopPre=, ExecStopPost=
TimeoutSec=
Service=
RemoveOnStop=
أُضيف في الإصدارة 214.
Symlinks=
أُضيف في الإصدارة 214.
FileDescriptorName=
أُضيف في الإصدارة 227.
TriggerLimitIntervalSec=، TriggerLimitBurst=
إذا تُجوز الحد، توضع وحدة المقبس في وضع الفشل، ولن تكون قابلة للاتصال بعد الآن حتى إعادة التشغيل. لاحظ أن هذا الحد يُفرض قبل وضع تفعيل الخدمة في قائمة الانتظار.
قارن مع PollLimitIntervalSec=/PollLimitBurst= الموضح أدناه، والذي ينفذ تباطؤًا مؤقتًا إذا غمرت حركة المرور الواردة وحدة المقبس، على عكس حالة الفشل الدائم التي ينتج عنها TriggerLimitIntervalSec=/TriggerLimitBurst=.
أُضيف في الإصدارة 230.
PollLimitIntervalSec=, PollLimitBurst=
إذا تُجوز حد الاستقصاء، يُعطل الاستقصاء مؤقتًا عليه حتى تمر النافذة الزمنية المحددة. وبالتالي، يبطئ حد الاستقصاء محاولات الاتصال إذا تُجوزَ ، ولكن على عكس حد التشغيل، لن يتسبب في فشل دائم. إنها الآلية الموصى بها للتعامل مع محاولات رفض الخدمة من خلال فيض الحزم.
يُفرض حد الاستقصاء لكل واصف ملف للاستماع عليه، على عكس حد التشغيل الذي يُفرض لوحدة المقبس بأكملها. هذا التمييز مهم لوحدات المقبس التي تستمع على واصفات ملفات متعددة (أي تحتوي على مقاطع ListenXYZ= متعددة).
المبدئي لهذه الإعدادات هو 150 (في حالة Accept=yes) و 15 (بخلاف ذلك) حدث استقصاء لكل 2 ثانية. هذا أقل بكثير من القيم المبدئية لحد التشغيل (انظر أعلاه) ويعني أن حد الاستقصاء يجب أن يضمن عادةً عدم تجاوز حد التشغيل أبدًا، ما لم تُنفذ تهيئة أحدهما أو تعطيله.
أُضيف في الإصدار 255.
DeferTrigger=
هذا الإعداد مفيد لا سيما إذا كان ينبغي لوحدة المقبس أن تظل نشطة عبر عمليات تبديل الجذر (switch-root) أو إعادة التشغيل الناعم (soft-reboot) في حين تُوقف الخدمة الملحّة.
أُضيف في الإصدار 258.
DeferTriggerMaxSec=
أُضيف في الإصدار 258.
PassFileDescriptorsToExec=
أُضيف في الإصدار 256.
تحقق من 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 للمطورين": تنشيط المقابس[5]، وتنشيط المقابس، الجزء الثاني[6]، وتحويل خدمات inetd[7]، وخدمات الإنترنت وحاويات نظام التشغيل المنشطة بالمقابس[8].
ملاحظات¶
- 1.
- نظام ملفات وظائف USB (USB FunctionFS)
- 2.
- RFC 3875
- 3.
- دليل TCP Keepalive
- 4.
- Smack
- 5.
- تفعيل المقبس
- 6.
- تفعيل المقبس، الجزء الثاني
- 7.
- تحويل خدمات inetd
- 8.
- خدمات الإنترنت المُفعّلة بالمقبس وحاويات نظام التشغيل
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com> و #
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 260.1 |