在linux运行多线程的python程序,出现报错:Address already in use,一般是因为所需要的端口被其他线程占用了,所以需要先关闭这些线程。
解决办法(单个进程用1、3步,批量关闭用第4步)
1. 查询被占用的端口(15688换成自己的端口号):
netstat -apn | grep 15688
2. 查询使用该端口的用户(可选):
ps -ef | grep 15688
执行后显示的结果中,用户名字在开头。
3. 关闭进程(1072换成自己的pid),一般用正常方式就行(区别见附录):
正常关闭:
kill 1072
强制关闭 :
kill -9 1072
4. 批量关闭
有时候会遇到需要关闭多个某一类进程的情况,可以按照关键字批量关闭,如关键字为client,指令如下:
(1)先开管理员权限:
sudo -i
(2)按关键字查询
ps -ef | grep client
(3)按关键字批量关闭
ps -aux|grep "client"|awk '{print "kill -9 "$2}'|sh
附录:两种关闭方式的区别
使用 kill PID 可以向进程发送可以被捕获和处理的终止信号,给进程一个机会进行清理操作。而 kill -9 PID 发送的是强制终止信号,进程无法捕获或处理该信号,会立即被终止。
一般来说,建议先尝试使用 kill PID 发送默认的终止信号,只有在进程无响应或无法正常退出时,才使用 kill -9 PID 强制终止进程。这样可以避免未完成的操作和资源泄漏。