今天在使用kill关闭Redis进程后,但端口却没被释放,导致端口被占用。网上查了下资料,现在记录一下,列出详细解决过程。
1. 查找被占用的端口
netstat -tln
netstat -tln | grep 8060
netstat -tln 查看端口使用情况,而netstat -tln | grep 8060则是只查看端口8060的使用情况
[root@zhile src]# netstat -tln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:9502 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:2345 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
2. 查看端口属于哪个程序?端口被哪个进程占用
[root@zhile src]# lsof -i:6379
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php 18718 www 8u IPv4 49059850 0t0 TCP localhost:58402->localhost:6379 (CLOSE_WAIT)
redis-ser 18814 root 4u IPv4 49063299 0t0 TCP *:6379 (LISTEN)
3. 杀掉占用端口的进程 根据PID杀掉
kill -9 进程ID
kill -9 18814