Networking
如何關閉似乎被 Xvfb 孤立的埠?
我在 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 的程序。