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) . : o Before= . o ( AF_UNIX FIFOs) Requires= After= . o BindToDevice= BindsTo= After= . systemd.exec(5) systemd.resource-control(5). DefaultDependencies=no: o Before= sockets.target. o 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 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= FIFO ( fifo(7) ) . . ListenDatagram= . ListenSpecial= . . ListenFIFO= . /proc/ /sys/. ListenNetlink= Netlink . AF_NETLINK ( audit kobject-uevent) . ListenDatagram= . ListenMessageQueue= POSIX ( mq_overview(7) ). ( "/"). ListenFIFO= . Linux . ListenUSBFunction= USB FunctionFS[1] USB. FunctionFS . ListenFIFO= . FunctionFS ep0. USBFunctionDescriptors= USBFunctionStrings=. 227. SocketProtocol= udplite sctp mptcp. UDP-Lite (IPPROTO_UDPLITE) SCTP (IPPROTO_SCTP) MPTCP (IPPROTO_MPTCP) . 229. BindIPv6Only= default both ipv6-only. IPV6_V6ONLY ( ipv6(7) ). both IPv6 IPv4 IPv6. ipv6-only IPv6 . default ( !) /proc/sys/net/ipv6/bindv6only both. Backlog= 32 . . . listen(2) . 4294967295. sysctl "net.core.somaxconn" 4096 sysctl . BindToDevice= . . SO_BINDTODEVICE ( socket(7) ). ( systemd.device(5)). ( ). SocketUser=, SocketGroup= / UNIX. AF_UNIX FIFO . () / ( ) / ( ). . 214. SocketMode= FIFO . . 0666. DirectoryMode= FIFO . . . 0755. Accept= . . ( ). (datagram) FIFO . . 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= . ListenSpecial=. - . . 227. FlushPending= . Accept=no. . . . . 247. MaxConnections= Accept=yes. . Accept=no (datagram). 64. MaxConnectionsPerSource= IP ( IPv4/IPv6) CID ( AF_VSOCK) UID ( AF_UNIX). MaxConnections= . 0 . 232. KeepAlive= . TCP/IP (keep alive) ( /proc/sys/net/ipv4/tcp_keepalive_time) TCP . SO_KEEPALIVE ( socket(7) TCP Keepalive HOWTO[3] .) . KeepAliveTimeSec= () . TCP . TCP_KEEPIDLE ( socket(7) TCP Keepalive HOWTO[3] .) 7200 (). 216. KeepAliveIntervalSec= () SO_KEEPALIVE . TCP_KEEPINTVL ( socket(7) TCP Keepalive HOWTO[3] .) 75 . 216. KeepAliveProbes= . . TCP_KEEPCNT ( socket(7) TCP Keepalive HOWTO[3] .) 9. 216. NoDelay= . Nagle TCP . TCP_NODELAY ( tcp(7)). . 216. Priority= . SO_PRIORITY ( socket(7) .). DeferAcceptSec= () . . TCP_DEFER_ACCEPT ( tcp(7)) ACK . ACK . ( HTTP SMTP) . TCP_DEFER_ACCEPT ( " "). . 216. 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= . bind(2) TCP UDP. SO_REUSEPORT. socket(7) . 206. SmackLabel=, SmackLabelIPIn=, SmackLabelIPOut= . "security.SMACK64" "security.SMACK64IPIN" "security.SMACK64IPOUT" FIFO . Smack[4] . 196. SELinuxContextFromNet= . systemd SELinux . . SELinux SELinuxContext=. . SELinux MLS/MCS. "false". 217. PipeSize= . FIFOs . fcntl(2) . K M G 1024. MessageQueueMaxMessages=, MessageQueueMessageSize= mq_maxmsg mq_msgsize . . mq_setattr(3) . FreeBind= . 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. 258. PassSecurity= . SO_PASSSEC AF_UNIX . false. PassPacketInfo= . IP_PKTINFO IPV6_RECVPKTINFO NETLINK_PKTINFO PACKET_AUXDATA AF_INET AF_INET6 AF_UNIX AF_PACKET. false. 246. AcceptFileDescriptors= . SO_PASSRIGHTS SCM_RIGHTS ( ) AF_UNIX. true. 258. Timestamping= "off" "us" ( : "usec" "s") "ns" ( : "nsec"). SO_TIMESTAMP SO_TIMESTAMPNS . off. 247. TCPCongestion= . TCP . "westwood" "reno" "cubic" "lp" IP. . ExecStartPre= ExecStartPost= /FIFOs . . ExecStartPre= . ExecStopPre=, ExecStopPost= /FIFOs . 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 FIFOs Symlinks=. . . 214. Symlinks= . AF_UNIX FIFO . AF_UNIX FIFO . . . . . 214. FileDescriptorName= . . sd_listen_fds_with_names(3) . ASCII ":" 255 . ( .socket) Accept=no "connection" . 227. TriggerLimitIntervalSec= TriggerLimitBurst= . TriggerLimitIntervalSec= "us" "ms" "s" "min" "h" ... 2 ( systemd.time(7) ). TriggerLimitBurst= 200 Accept=yes ( 200 2 ) 20 (20 2 ). 0 . . . PollLimitIntervalSec=/PollLimitBurst= TriggerLimitIntervalSec=/TriggerLimitBurst=. 230. PollLimitIntervalSec=, PollLimitBurst= . TriggerLimitIntervalSec=/TriggerLimitBurst= () () . . . . . . ( ListenXYZ= ). 150 ( Accept=yes) 15 ( ) 2 . ( ) . 255. DeferTrigger= "patient". Accept=no. "lenient" "replace" / /. . DeferTriggerMaxSec=. yes . patient DeferTriggerMaxSec=. no. (switch-root) (soft-reboot) . 258. DeferTriggerMaxSec= DeferTrigger=. . "5min 20s". "0" "infinity" (). 258. PassFileDescriptorsToExec= . . ExecStartPost= ExecStopPre= ExecStopPost= . sd_listen_fds(3) . ExecStartPre= . 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) https://docs.kernel.org/usb/functionfs.html 2. RFC 3875 https://datatracker.ietf.org/doc/html/rfc3875 3. TCP Keepalive http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ 4. Smack https://docs.kernel.org/admin-guide/LSM/Smack.html 5. https://0pointer.de/blog/projects/socket-activation.html 6. https://0pointer.de/blog/projects/socket-activation2.html 7. inetd https://0pointer.de/blog/projects/inetd.html 8. https://0pointer.de/blog/projects/socket-activated-containers.html # 3 . . : . systemd 260.2 SYSTEMD.SOCKET(5)