2016-09-20 74 views
1

大家好大所以我有這個煩人的問題,我的端口沒有關閉。例如,我使用了一個快速生成器來給我一個節點js/express服務器的大綱/骨架。當我退出服務器時,端口未關閉

Port 3000 is already in use 

通常我只能夠CTRL + Z,它會退出服務器。

但最近它沒有完全退出服務器。

我發現了一個小的工作圍繞這是該

lsof -wni tcp:3000 

然後,它將產生這樣的

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 
node 5623 viet 12u IPv6 59797  0t0 TCP *:3000 (LISTEN) 

我會找到PID,然後用此命令

kill -9 5623 
殺死它

但是現在它變得非常煩人,每次我退出時都會這樣做的服務器。有沒有人知道爲什麼它這樣做,或者我猜爲什麼CTRL Z不能如何工作。

+0

你使用的是Linux嗎? – Beginner

+0

@NewbeeDev是ubuntu 14.04具體 –

+0

請注意,CTRL-Z **不會退出unix上的程序**。它只是把這個程序放在後臺(類似於用'&開始程序)。在CTRL-Z之後,您可以通過輸入「fg」返回(運行,不退出)程序。按CTRL-Z時,您可能誤導了「已停止的程序名」消息。它已停止但未退出。 「停止」意味着它正在睡覺。 – slebetman

回答

3

按Ctrl + Z在基於Unix的操作系統,只是暫停該應用程序。

如果你

ps aux|grep node 

然後

kill -9 processid 

你應該能夠收回的端口。前進,Ctrl + C關閉應用程序。

+0

這看起來不錯。但是要小心使用-9信號kill –

+0

'Ctrl-Z'不會在後臺放置一個進程,它會暫停它(通過發送一個'SIGTSTP'信號)。 – robertklep

+1

或者只是'killall processname',例如'killall節點'。 – Qix

1

試試這個

sudo fuser -k 3000/tcp 
+0

抱歉它沒有做任何事情。我跑了我的服務器。 CTRL Z並再次運行它,並註銷端口3000已經在使用 –

+0

奇怪,它應該工作 – Beginner

+0

它給了我一個事情的列表,但。 HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP三偏磷酸鈉TTIN TTOU URG XCPU XFSZ VTALRM潘宗光絞盤IO PWR SYS 未使用 –