Answers:
假设您要杀死端口3000(webrick通常使用的端口)上的任何内容,请在终端中键入以下内容以找出进程的PID:
$ lsof -wni tcp:3000
然后,使用PID列中的数字来终止该进程:
$ kill -9 PID
PID
在输入第一行代码(例如12345
)后将替换为控制台中显示的实际数字。
lsof -wni tcp:3000
将始终显示所有正在侦听该protocol:port组合的进程。(其中3000将替换为本地服务器端口。例如,在Rails中,默认值为3000)。
kill -9 $(lsof -i tcp:3000 -t)
-t
意味着specifies that lsof should produce terse output with process identifiers only and no header - e.g., so that the output may be piped to kill(1).
我想您知道该怎么kill
做
kill -9
死记硬背/习惯使用答案的评论。
您需要使用tcp端口3000获取程序的进程ID。要获取进程ID
lsof -i tcp:3000 -t
然后使用该进程ID,只需使用ubuntu kill命令杀死进程即可。
kill -9 pid
或者只运行下面提到的Combine命令。它将首先获取pid,然后终止该进程。
kill -9 $(lsof -i tcp:3000 -t)
kill -9
死记硬背/习惯使用答案的评论。
对于在Mac上不在此问题上遇到麻烦的任何人:假设您知道服务器在端口3000上运行,则可以通过执行以下操作一次性完成此操作:
fuser -k 3000/tcp
但是正如Toby所提到的,在Mac OS中执行融合器是非常原始的,此命令在Mac上不起作用。
-v
标记还显示了有关杀死哪个进程的少量信息。这样fuser -kv 3000/tcp
。Mac,MacOS的热熔器不具备此功能。kill $(lsof -ti tcp:3000)
是相当接近的等价物。
有时,Rails服务器可能无法正确关闭。您可以找到导轨使用的过程
ps aux | grep rails
输出会像
user 12609 9.8 0.5 66456 45480 pts/0 Sl+ 21:06 0:02 /home/user/.rvm/rubies/ruby-2.2.0-preview1/bin/ruby bin/rails s
在这里,rails服务器使用process_id 12609。
您可以通过命令轻松杀死它
杀死-9 12609
kill -9
死记硬背/习惯使用答案的评论。
ps aux | grep puma
上面的所有答案都非常好,但是我需要一种在终端中键入尽可能少的内容的方法,因此我为此创建了一个gem。您只可以安装gem一次,并且每次想要杀死Rails进程时(在当前文件夹中时)运行命令“ shutup”。
gem install shutup
然后进入rails项目的当前文件夹并运行
shutup
#这将杀死当前正在运行的Rails进程
您可以随时使用命令“ shutup”
求职者:我是这颗宝石的创造者
注意:如果您使用的是rvm,请在全局安装gem
rvm @global do gem install shutup
lsof
方法更加可靠。
默认情况下,rails服务器使用端口3000。
因此,您有2个选项来运行rails服务器。
1.您可以通过使用以下命令定义自定义端口来在其他端口上运行服务器
rails s -p 3001
2.或者您可以通过运行以下命令杀死所有正在运行的ruby进程,
killall -9 ruby
然后运行rails server
一线解决方案:
kill -9 $(ps aux | grep 'rails s' | awk {'print$2'}); rails s
如果您在Windows计算机上,请执行以下步骤。
c:/project/
cd tmp
c:/project/tmp
cd pids
c:/project/tmp/pids
dir
在那里,您将找到一个名为server.pid的文件
删除它。
c:/project/tmp/pid> del *.pid
而已。
编辑: 请参阅此