经常在启动一个程序会碰到端口被占用,这里讲一下怎么查看端口是否被占用,及哪个程序占用,怎么Kill掉已占用端口的程序
1、lsof -i:port
port为端口号
[root@slave /data/spark-1.4.0-bin-cdh4]# lsof -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
impalad 11978 mqq 150u IPv4 549847837 0t0 TCP *:webcache (LISTEN)
通过上面命令可以查看到8080端口被impalad这个程序占用,进程ID为:11978
如要杀掉该进程,可以执行:
kill -9 11978将该程序杀掉
2、通过netstat 和 ps 两个命令联合起来看占用端口的程序及进程ID
[root@slave /data/spark-1.4.0-bin-cdh4]# netstat -apn|grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 11978/impalad
tcp 0 0 192.168.209.16:53501 192.168.209.19:8080 TIME_WAIT -
可以看到8080已被impalad占用,并且进程ID为:11978,再通过下面命令可以看到该程序的路径
[root@slave /data/spark-1.4.0-bin-cdh4]# ps -elf|grep impalad
0 S mqq 11978 1 9 80 0 - 15906542 futex_ Jun25 ? 2-01:23:55 /usr/lib/impala/sbin/impalad -log_dir=/data/log/impala -catalog_service_host=host.impala -state_store_port=24000 -use_statestore -webserver_port=8080 -state_store_host=host.impala -be_port=22000 -default_query_options=DEFAULT_ORDER_BY_LIMIT=1000000
0 S root 27963 24729 0 80 0 - 25810 pipe_w 14:37 pts/5 00:00:00 grep impalad