我在我的Linux服务器上运行一个JAVA的red5服务器。
有时候,服务器会关闭。当我尝试重新启动它时,会出现一个错误:
"绑定错误,该端口已被占用"。
所以我尝试使用killall -9 java命令杀掉服务器进程,并尝试重启服务器:但是还是会遇到相同的错误。
我必须等待一段时间(大约2-3分钟)然后再次重启服务器:这样就可以正常工作了。
我想知道为什么当我杀死进程后,我仍然需要等待2-3分钟才能释放1935端口并再次运行服务器。
是否有一种方法可以立即杀死进程并释放端口?
我在我的Linux服务器上运行一个JAVA的red5服务器。
有时候,服务器会关闭。当我尝试重新启动它时,会出现一个错误:
"绑定错误,该端口已被占用"。
所以我尝试使用killall -9 java命令杀掉服务器进程,并尝试重启服务器:但是还是会遇到相同的错误。
我必须等待一段时间(大约2-3分钟)然后再次重启服务器:这样就可以正常工作了。
我想知道为什么当我杀死进程后,我仍然需要等待2-3分钟才能释放1935端口并再次运行服务器。
是否有一种方法可以立即杀死进程并释放端口?
jps
,找到列表中的服务器pid并运行kill -9 my_pid
对于一般非Java进程,lsof -i :1935
通常适用于我。再次获取pid并杀死该进程。立即处理终止和端口释放:
fuser -k 1935/tcp
SO_REUSEADDR
选项。这样一来,当程序重新启动时,您可以立即重用套接字,而不必等待2-3分钟。kill $(fuser 1935/tcp)
默认情况下不应使用kill -9。该进程无法清理内部内容。 例如,要杀死使用端口8000的应用程序的pid:
kill $(netstat -nptl | awk '/:8000/{gsub("/.*", ""); print $7}')