如何查找(和终止)侦听/使用我的tcp端口的进程?我在mac os x上。
有时,在崩溃或某些错误之后,我的rails应用程序锁定了端口3000.我找不到使用ps -ef ...
做的时候
rails server
我得到了
地址已在使用中 - bind(2)(Errno :: EADDRINUSE)
2014年更新:
要完成以下某些答案:执行kill命令后,可能需要删除pid文件rm ~/mypath/myrailsapp/tmp/pids/server.pid
答案 0 :(得分:2297)
您可以尝试netstat
netstat -vanp tcp | grep 3000
对于 macOS El Capitan 及更新版(或者如果您的netstat不支持-p
),请使用lsof
sudo lsof -i tcp:3000
Centos 7 使用
netstat -vanp --tcp | grep 3000
答案 1 :(得分:1478)
查找
[sudo] lsof -i :3000
杀:
kill -9 <PID>
答案 2 :(得分:144)
上面没有任何内容对我有用。任何有我经验的人都可以尝试以下(为我工作):
执行命令
lsof -i :3000 (where 3000 is your current port in use)
然后检查报告的PID的状态:
ps ax | grep <PID>
最后,“忍受它”:
kill -QUIT <PID>
答案 3 :(得分:120)
使用端口3000提取进程的PID并将其终止的单行程序。
lsof -ti:3000 | xargs kill
-t标志从lsof输出中删除除PID之外的所有内容,从而轻松杀死它。
答案 4 :(得分:94)
您可以使用lsof -i:3000
。
那就是“列出打开文件”。这将为您提供进程列表以及它们使用的文件和端口。
答案 5 :(得分:55)
在.bash_profile
中,为terminate
3000流程创建快捷方式:
terminate(){
lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9
}
然后,如果被阻止,请致电$terminate
。
答案 6 :(得分:55)
要强制终止类似的进程,请使用以下命令
lsof -n -i4TCP:3000
其中3000是进程运行的端口号
这会返回进程ID(PID) 并运行
kill -9 "PID"
将PID替换为运行第一个命令后获得的数字
答案 7 :(得分:55)
这个简单的命令行很容易记住:
coef(fit, s = "lambda.min")
#3 x 1 sparse Matrix of class "dgCMatrix"
# 1
#(Intercept) 2.439590e+01
#x1 1.451704e+01
#x2 5.723395e-16
使用搜索功能更强大的工具:
npx kill-port 3000
PS:他们使用第三方javascript程序包。 npx fkill-cli
随Node.js内置。
答案 8 :(得分:34)
lsof -P | grep ':3000' | awk '{print $2}'
这将为您提供在MacOS上测试的pid。
答案 9 :(得分:31)
杀死多个端口。
$ npx kill-port 3000 8080 8081
Process on port 3000 killed
Process on port 8080 killed
Process on port 8081 killed
希望有帮助!
答案 10 :(得分:27)
One of the ways to kill a process on a port is to use the python library: freeport (https://pypi.python.org/pypi/freeport/0.1.9) . Once installed, simply:
<?php
function hagel_script_enqueue() {
//css
wp_enqueue_style('bootstrap', get_template_directory_uri() . '/css/bootstrap.min.css', array(), '3.3.4', 'all');
wp_enqueue_style('customstyle', get_template_directory_uri() . '/css/hagel.css', array(), '1.0.0', 'all');
//js
wp_enqueue_script('jquery');
wp_enqueue_script('bootstrapjs', get_template_directory_uri() . '/js/bootstrap.min.js', array(), '3.3.4', true);
wp_enqueue_script('customjs', get_template_directory_uri() . '/js/hagel.js', array(), '1.0.0', true);
}
add_action( 'wp_enqueue_scripts', 'hagel_script_enqueue');
答案 11 :(得分:27)
在OS-X El Captain上执行命令行:
kill -kill `lsof -t -i tcp:3000`
lsof的Terse选项只返回PID。
答案 12 :(得分:22)
找到开放式连接
lsof -i -P | grep -i“听”
按进程ID
终止kill -9'PID'
答案 13 :(得分:21)
找到PID并终止进程。
lsof -ti:3000 | xargs kill
答案 14 :(得分:17)
发现并杀死:
此单个命令行很简单并且可以正常运行。
kill -9 $(lsof -ti tcp:3000)
答案 15 :(得分:13)
实现这一目标的可能方法:
热门强>
top命令是查看系统资源使用情况的传统方法,并查看占用最多系统资源的进程。 Top显示进程列表,其中顶部使用最多的CPU。
<强> PS 强>
ps命令列出正在运行的进程。以下命令列出了系统上运行的所有进程:
ps -A
您还可以通过grep管道输出以搜索特定进程,而无需使用任何其他命令。以下命令将搜索Firefox进程:
ps -A | grep firefox
将信号传递给程序的最常用方法是使用kill命令。
kill PID_of_target_process
<强> lsof的强>
所有打开文件的列表以及打开它们的进程。
lsof -i -P | grep -i "listen"
kill -9 PID
或
lsof -i tcp:3000
答案 16 :(得分:11)
最简单的解决方案: 使用单行命令杀死多个端口。
kill $(lsof -t -i:3000,3001) // 3000 and 3001 are the ports to be freed
lsof -t -i:3000
82500
lsof -t -i:3001
82499
lsof -t -i:3001,3000
82499 82500
杀死$(lsof -t -i:3001,3000)
在单个命令中终止进程82499和82500。
lsof -t -i:3000
lsof -t -i:3001
您可以在package.json
脚本中使用它
"scripts": {
"start": "kill $(lsof -t -i:3000,3001) && npm start"
}
答案 17 :(得分:8)
这两个命令将帮助您查找并杀死服务器进程
- lsof -wni tcp:3000
- 杀死-9 pid
答案 18 :(得分:5)
使用sindresorhus fkill工具,您可以这样做:
$ fkill :3000
答案 19 :(得分:5)
添加到~/.bash_profile
:
function killTcpListen () {
kill -QUIT $(sudo lsof -sTCP:LISTEN -i tcp:$1 -t)
}
然后source ~/.bash_profile
并运行
killTcpListen 8080
答案 20 :(得分:4)
kill -9 $(lsof -ti:3000)
始终在 macOS 上为我工作。
如果您正在处理 node.js 项目,则可以将其添加到 package.json 脚本中,例如;
"scripts": {
...
"killme": "kill -9 $(lsof -ti:3000)",
...
},
然后
npm run killme
--
此外,如果您想为 macOS 添加系统范围的别名,请按照以下步骤操作;
导航到您的主目录:
cd ~
使用 nano 或 vim 打开 .bash_profile 或 zsh 配置文件:
vi .bash_profile
添加别名(按 i):
别名 killme="kill -9 $(lsof -ti:3000)"
保存文件
重启终端
输入 killme
到终端
当然,您可以将端口 3000 更改为您想要的。
答案 21 :(得分:3)
I made a little function for this, add it to your rc file (.bashrc
, .zshrc
or whatever)
function kill-by-port {
if [ "$1" != "" ]
then
kill -9 $(lsof -ni tcp:"$1" | awk 'FNR==2{print $2}')
else
echo "Missing argument! Usage: kill-by-port $PORT"
fi
}
then you can just type kill-by-port 3000
to kill your rails server (substituting 3000 for whatever port it's running on)
failing that, you could always just type kill -9 $(cat tmp/pids/server.pid)
from the rails root directory
答案 22 :(得分:3)
TL; DR:
lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill
如果您处于使用该端口的客户端和服务器的情况,例如:
$ lsof -i tcp:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 2043 benjiegillam 21u IPv4 0xb1b4330c68e5ad61 0t0 TCP localhost:3000->localhost:52557 (ESTABLISHED)
node 2043 benjiegillam 22u IPv4 0xb1b4330c8d393021 0t0 TCP localhost:3000->localhost:52344 (ESTABLISHED)
node 2043 benjiegillam 25u IPv4 0xb1b4330c8eaf16c1 0t0 TCP localhost:3000 (LISTEN)
Google 99004 benjiegillam 125u IPv4 0xb1b4330c8bb05021 0t0 TCP localhost:52557->localhost:3000 (ESTABLISHED)
Google 99004 benjiegillam 216u IPv4 0xb1b4330c8e5ea6c1 0t0 TCP localhost:52344->localhost:3000 (ESTABLISHED)
然后你可能不想杀死它们。
在这种情况下,您可以使用-sTCP:LISTEN
仅显示正在侦听的进程的pid。将其与-t
简洁格式相结合,您可以自动终止该过程:
lsof -ti tcp:3000 -sTCP:LISTEN | xargs kill
答案 23 :(得分:2)
要关闭 mac 上的 3000 端口,请运行以下命令
kill -9 $(lsof -t -i:3000 -sTCP:LISTEN)
答案 24 :(得分:2)
我最喜欢的单线:
sudo kill `sudo lsof -t -i:3000`
答案 25 :(得分:1)
lsof -i tcp:port_number
-将列出在该端口上运行的进程
kill -9 PID
-将终止进程
在您的情况下,它将是
lsof -i tcp:3000
来自您的终端
找到进程的PID
kill -9 PID
答案 26 :(得分:1)
为我工作以终止节点(Mac OS Catalina)
killall -9 node
答案 27 :(得分:1)
这是一个帮助bash函数,用于按名称或端口杀死多个进程
$subcat = mysqli_real_escape_string($con, $_POST[ 'subcat' ]);
$query = "INSERT into subcategory (scatname) VALUES ('$subcat')";
$result = mysqli_query( $con, $query );
用法:
fkill() {
for i in $@;do export q=$i;if [[ $i == :* ]];then lsof -i$i|sed -n '1!p';
else ps aux|grep -i $i|grep -v grep;fi|awk '{print $2}'|\
xargs -I@ sh -c 'kill -9 @&&printf "X %s->%s\n" $q @';done
}
示例:
$ fkill [process name] [process port]
答案 28 :(得分:1)
您应该尝试此方法,该技术与操作系统无关。
在您的应用程序中,有一个名为tmp的文件夹,在其中有另一个名为pids的文件夹。 该文件包含服务器pid文件。 只需删除该文件。端口会自动杀死自己。
我认为这是简单的方法。
答案 29 :(得分:0)
您可以尝试
Download finished
Upload finished
Promise resolved
Upload error
Error: write after end
...
答案 30 :(得分:0)
使用以下命令杀死端口3000上的进程
kill $(lsof -t -i:3000)
答案 31 :(得分:0)
我用这个:
cat tmp/pids/server.pid | pbcopy
然后
kill -9 'paste'
答案 32 :(得分:0)
如果您想要一种免代码的方式-打开活动管理器并强制杀死节点:)
答案 33 :(得分:0)
我使用:
lsof -wni tcp:3000
获取PID,并:
kill -9 <PID>
答案 34 :(得分:0)
如果您正在使用 Zsh,并且不想记住多管道命令,只需将下一行代码添加到 ~/.zshrc
:
function murder() {
lsof -nti:$1 | xargs kill -9
}
然后任何时候您需要杀死特定端口上的进程,只需使用:
murder 3000
P.S 随意重命名命令并改进它:)
答案 35 :(得分:0)
我有 Macbook Pro (Catalina),1 天后我在运行 Django 服务器(默认运行在端口 8000)时发现了以下问题:
<块引用>python manage.py runserver 3000
(venv) Rishikeshs-MacBook-Pro:learn-django hygull$ python manage.py runserver 3000
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
July 27, 2021 - 23:54:05
Django version 3.2.3, using settings 'automated_classification.settings'
Starting development server at http://127.0.0.1:3000/
Quit the server with CONTROL-C.
Error: That port is already in use.
我尝试使用所提供并执行的,但仅运行其中 1 个并不能解决我的问题(我知道还有其他一些答案,但不知何故我解决了我的问题)。例如。我试图重新运行上面的命令,但这也不起作用(进程仍然处于活动状态)。
所以我最终按照他和其他人的建议,使用了@Cris 的答案,另外还有 1 个步骤。所以我的答案是将他们的命令与终端输出一起使用,让您更清楚地执行操作。
<块引用>lsof -P | grep ':3000' | awk '{print $2}'
(venv) Rishikeshs-MacBook-Pro:learn-django hygull$ lsof -P | grep ':3000' | awk '{print $2}'
36239
38272
现在我得到了要杀死的 id 列表,让我们开始吧。
<块引用>kill -9
(venv) Rishikeshs-MacBook-Pro:learn-django hygull$ kill -9 36239
(venv) Rishikeshs-MacBook-Pro:learn-django hygull$ kill -9 36239
-bash: kill: (36239) - No such process
(venv) Rishikeshs-MacBook-Pro:learn-django hygull$ kill -9 38272
(venv) Rishikeshs-MacBook-Pro:learn-django hygull$ kill -9 38272
-bash: kill: (38272) - No such process
现在,让我们尝试重新运行命令。
<块引用>python manage.py runserver 3000
(venv) Rishikeshs-MacBook-Pro:learn-django hygull$ python manage.py runserver 3000
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
July 27, 2021 - 23:55:53
Django version 3.2.3, using settings 'project.settings'
Starting development server at http://127.0.0.1:3000/
Quit the server with CONTROL-C.
kill -9 $(lsof -P | grep ':3000' | awk '{print $2}')
您可以将上述 2 个步骤合并在 1 行中并执行以终止侦听端口 3000 的进程。
答案 36 :(得分:-1)
在Mac OS中
kill -9 $(lsof -i TCP:3000 | grep LISTEN | awk '{print $2}')
答案 37 :(得分:-2)
步骤1:查找正在运行的服务器:
ps aux | grep puma
步骤2:杀死这些服务器
杀死-9 [服务器号]
答案 38 :(得分:-7)
您应该使用终端尝试此代码:
$ killall -9 ruby