実行すると、netstat -nptl
次のような奇妙な結果が表示されます。
tcp 0 0 127.0.2.1:53 0.0.0.0:* LISTEN 1/init
これはdnscrypt-proxy
DoH サービスの基本構成です。
ps uww 1
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.0 166580 11936 ? Ss 12:15 0:01 /sbin/init splash
なぜPID 1が今では意味がないのか疑問に思います。
ベストアンサー1
Linuxではより多くの情報を提供するため、usingをnetstat
usingに置き換える必要があります。ss
この場合、以下を提供します。みんなソケットを共有するプロセスは、netstat
最初のプロセスと同時に停止します。comm
name( systemd
) の代わりにcmd
name() を提供するなど、微妙な違いもありますinit
。これはDebian 12ですが、すべてのsystemdベースのLinuxシステムは似ています。
# netstat -tnlp | awk 'NR <=2 || /127.0.2.1:/'
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.2.1:53 0.0.0.0:* LISTEN 1/init
# ss -nptl src 127.0.2.1
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.2.1:53 0.0.0.0:* users:(("dnscrypt-proxy",pid=6245,fd=8),("systemd",pid=1,fd=49))
どちらも同じソケットをsystemd
共有していることがわかります。dnscrypt-proxy
なぜ?だからdnscrypt-proxy
走っているけどシステム~のソケット 活性化: 同様のメカニズムイントラネットしかし、デーモンが実際に実行される前にソケットのリスニングを許可し(構成されている場合)、デーモンが最初の呼び出しで開始されるように準備するように改善されました。いつシステム サービス構成関連していますシステム ソケットの構成(ここでは十分な依存関係がありますRequires=dnscrypt-proxy.socket
)これは、ソケットアクティベーションを使用していることを意味します。
# systemctl status dnscrypt-proxy.socket
* dnscrypt-proxy.socket - dnscrypt-proxy listening socket
Loaded: loaded (/lib/systemd/system/dnscrypt-proxy.socket; enabled; preset: enabled)
Active: active (running) since Tue 2024-01-09 18:16:11 UTC; 23min ago
Triggers: * dnscrypt-proxy.service
Docs: https://github.com/DNSCrypt/dnscrypt-proxy/wiki
Listen: 127.0.2.1:53 (Stream)
127.0.2.1:53 (Datagram)
Tasks: 0 (limit: 18402)
Memory: 12.0K
CPU: 1ms
CGroup: /system.slice/dnscrypt-proxy.socket
[...]
# systemctl status dnscrypt-proxy.service
* dnscrypt-proxy.service - DNSCrypt client proxy
Loaded: loaded (/lib/systemd/system/dnscrypt-proxy.service; enabled; preset: enabled)
Active: active (running) since Tue 2024-01-09 18:38:54 UTC; 1min 20s ago
TriggeredBy: * dnscrypt-proxy.socket
Docs: https://github.com/DNSCrypt/dnscrypt-proxy/wiki
Main PID: 6245 (dnscrypt-proxy)
Tasks: 12 (limit: 18402)
Memory: 10.6M
CPU: 60ms
CGroup: /system.slice/dnscrypt-proxy.service
`-6245 /usr/sbin/dnscrypt-proxy -config /etc/dnscrypt-proxy/dnscrypt-proxy.toml
[...]
ソケットの生成は、そのセクションに関連付けられたセクションを通してsystemd
直接処理され、リスニングソケットは継承されます(このメソッドを知る必要があります)。.socket
.service
dnscrypt-proxy
このアプローチにはいくつかの利点があります。少なくとも次の2つ(他のものソケット 活性化リンク):
- デーモンは、起動時にも特権ポートを開く権限で実行する必要はありません。
- デーモンは、一定期間活動がなければ停止してシステムリソースを解放できます。システム新しいクエリが受信されると、接続を拒否せずに再開されます。