Ger*_*t M 25 linux port netstat
我有一个端口被我需要杀死的进程阻止。(一个崩溃的小 telnet 守护进程)。该进程已成功终止,但端口仍处于“FIN_WAIT1”状态。它没有出来,超时似乎设置为“十年”。
我发现释放端口的唯一方法是重新启动整个机器,这当然是我不想做的事情。
$ netstat -tulnap | grep FIN_WAIT1
tcp 0 13937 10.0.0.153:4000 10.0.2.46:2572 FIN_WAIT1 -
Run Code Online (Sandbox Code Playgroud)
有谁知道如何在不重新启动的情况下解锁此端口?
小智 23
# record what tcp_max_orphans's current value
original_value=$(cat /proc/sys/net/ipv4/tcp_max_orphans)
#set the tcp_max_orphans to 0 temporarily
echo 0 > /proc/sys/net/ipv4/tcp_max_orphans
# watch /var/log/messages
# it will split out "kernel: TCP: too many of orphaned sockets"
# it won't take long for the connections to be killed
# restore the value of tcp_max_orphans whatever it was before.
echo $original_value > /proc/sys/net/ipv4/tcp_max_orphans
# verify with
netstat -an|grep FIN_WAIT1
Run Code Online (Sandbox Code Playgroud)
您应该可以使用/proc/sys/net/ipv4/tcp_fin_timeout
.
似乎真的没有任何方法可以手动清除套接字。
小智 5
/proc/sys/net/ipv4/tcp_fin_timeout
是 FIN-WAIT-2 状态的超时,而不是 FIN-WAIT-1。您应该使用 tcpkill 路线,或者您可以尝试使用保持活动时间/proc/sys/net/ipv4/tcp_keepalive_*
来强制 SO 杀死。
归档时间: |
|
查看次数: |
83459 次 |
最近记录: |