
我試圖更好地理解我看到的行為 - 我控制了一台正在運行 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.socket 的「服務」正在運行,在我殺死 tftp.service 後,它使套接字保持打開狀態。我仍然不明白的是為什麼它顯示為 systmed pid 的一部分。
答案1
tftp 伺服器啟動以處理 tftp 請求。由於日誌中沒有這樣的請求,因此systemd
不會啟動tftp伺服器。但需要有一個程序來偵聽連接埠 69 上的傳入請求,否則該請求將進入 bitbucket。
這個過程就是systemd。
當連接埠 69 上的請求傳入時,systemd 會分叉一個 tftp 伺服器來處理該請求。當 tftp 伺服器完成後,它就死掉了。