
私は、自分が目にしている動作をよりよく理解しようとしています。TFTP が動作しているサーバーを制御し、それをオフにしようとしています。私はすでに以下を実行しました:
systemctl stop tftp
systemctl stop xinetd
しかし、tftpサービスを停止すると、
警告: tftp.service を停止していますが、tftp.socket によって引き続きアクティブ化できます。
ss -lnpu
その後私に与える
UNCONN 0 0 :::69
:::* users:(("systemd",pid=1,fd=60))
確認したところ、ポートは確かにまだリッスンしていますが、PID は systemd としてリストされています。動作が理解できません。どのようにして TFTP が systemd によって直接実行されるのでしょうか?
編集: tftp.service を終了した後もソケットを開いたままにする、tftp.socket という別の「サービス」が実行されていることがわかりました。まだ理解できないのは、なぜこれがシステム pid の一部として表示されるのかということです。
答え1
tftp サーバーは、tftp 要求を処理するために起動されます。そのような要求がない場合は、tftpsystemd
サーバーは起動しません。ただし、ポート 69 で着信要求をリッスンするプロセスが必要です。そうでない場合、その要求は bitbucket に送られます。
そのプロセスは systemd です。
ポート 69 にリクエストが到着すると、systemd はリクエストを処理するために tftp サーバーをフォークします。tftp サーバーが終了すると、サーバーは終了します。