ps aux和grep的使用查询进程
root@ubuntu:/opt/emqx# ps aux|grep emqx
root 8386 0.0 0.0 21292 936 pts/3 S+ 11:11 0:00 grep --color=auto emqx
启动emq,结果报错
2020-05-22 11:06:54.126 [error] mqtt:tcp failed to listen on 1883 - eaddrinuse (address already in use)
2020-05-22 11:06:54.127 [error] [Bridge Connect] Failed to connect with module=emqx_bridge_mqtt
原因是1883端口被占用,那么把占用1883的进程杀掉就行了
端口号查询:netstat |grep 端口号
1、
root@ubuntu:/opt/emqx# netstat |grep 1883
tcp 0 1 192.168.205.128:52420 192.168.3.109:1883 SYN_SENT
tcp 0 0 localhost:1883 localhost:37251 TIME_WAIT
可以看到有进程在使用1883端口,但是查看不到具体PID
2、lsof -i:端口号
root@ubuntu:/opt/emqx# lsof -i:1883
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mosquitto 936 mosquitto 4u IPv4 27170 0t0 TCP *:1883 (LISTEN)
mosquitto 936 mosquitto 5u IPv6 27171 0t0 TCP *:1883 (LISTEN)
mosquitto 936 mosquitto 6u IPv4 48420 0t0 TCP 192.168.205.128:52422->192.168.3.109:1883 (SYN_SENT)
可以看到936这个进程在使用1883端口,一般来说mosquitto默认使用的端口号就是1883.
之后kill掉mosquitto这个进程就好了
杀死进程方式: kill 或者 kill -9
root@ubuntu:/opt/emqx# kill -9 936
然后emqx程序就可以正常启动了