Networking

如何關閉似乎被 Xvfb 孤立的埠?

  • March 23, 2011

我在 FC8 Amazon EC2 映像上執行 Xvfb。有時 Xvfb 會崩潰(目前無法找出崩潰的原因),並且在崩潰後 TCP 埠會顯得孤立。我無法獲得一個 PID 來殺死任何可能正在使用它的程序。

我開始 Xvfb 與:

Xvfb :7 -screen 0 1024x768x24 &

我正在使用的範例如下,Xvfb 埠是(曾經)6007:

# netstat -ap 
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 *:ssh                       *:*                         LISTEN      1894/sshd           
tcp        0      0 *:6007                      *:*                         LISTEN      -                   
tcp        0    352 ip-10-84-69-165.ec2.int:ssh c-71-194-253-238.hsd1:51689 ESTABLISHED 2981/0              
udp        0      0 *:bootpc                    *:*                                     1817/dhclient       
udp        0      0 *:bootpc                    *:*                                     1463/dhclient       
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node PID/Program name    Path
unix  2      [ ]         DGRAM                    871    668/udevd           @/org/kernel/udev/udevd
unix  2      [ ACC ]     STREAM     LISTENING     5385   1880/dbus-daemon    /var/run/dbus/system_bus_socket
unix  6      [ ]         DGRAM                    5353   1867/rsyslogd       /dev/log
unix  2      [ ]         DGRAM                    11861  2981/0              
unix  2      [ ]         DGRAM                    5461   1974/crond          
unix  2      [ ]         DGRAM                    5451   1904/console-kit-da 
unix  3      [ ]         STREAM     CONNECTED     5438   1880/dbus-daemon    /var/run/dbus/system_bus_socket
unix  3      [ ]         STREAM     CONNECTED     5437   1904/console-kit-da 
unix  3      [ ]         STREAM     CONNECTED     5396   1880/dbus-daemon    
unix  3      [ ]         STREAM     CONNECTED     5395   1880/dbus-daemon    
unix  2      [ ]         DGRAM                    5361   1871/rklogd


# lsof -i
COMMAND   PID USER   FD   TYPE DEVICE SIZE NODE NAME
dhclient 1463 root    3u  IPv4   4704       UDP *:bootpc 
dhclient 1817 root    4u  IPv4   5173       UDP *:bootpc 
sshd     1894 root    3u  IPv4   5414       TCP *:ssh (LISTEN)
sshd     2981 root    3u  IPv4  11825       TCP ip-10-84-69-165.ec2.internal:ssh->c-71-194-253-238.hsd1.il.comcast.net:51689 (ESTABLISHED)

嘗試用 iptables 強制關閉埠似乎也不起作用。

iptables -A INPUT -p tcp --dport 6007 -j DROP

我不知道如何收回/釋放港口。據我所知,此埠將保持此狀態,直到 EC2 實例關閉。

那麼,我怎樣才能關閉這個埠,以便重新啟動 Xvfb?

我對 Xvfb 失敗的原因進行了更多調查,並且伺服器上有幾個不同程序的核心崩潰。

Unable to handle kernel paging request at virtual address

當 Xvfb 上發生這種核心恐慌時,我們會發現問題中描述了這種情況,核心打開了埠,我們只能通過重新啟動機器來釋放。

當我調查核心恐慌時,我遇到了這個連結:

<http://drija.com/linux/72417/network-port-open-but-no-process-attached/>

事實證明,我們使用的核心 (2.6.16-xenU) 現在在 Amazon EC2 實例上不穩定:

<http://www.vincestross.com/2009/04/upgrade-an-ec2-instance/>

我將我們使用的核心更改為 2.6.21.7-2.fc8xen-ec2-v1.0,現在一切似乎都很好。

這並不能真正回答有關如何釋放開放埠的問題,但我認為對於這個核心問題,如果不重新啟動就不可能釋放該埠。

fuser -kn tcp 6007以 root 身份執行應該殺死任何打開埠 6007 的程序。

引用自:https://serverfault.com/questions/249171