如何在Mac上查找和停止进程


11

如何找到进程ID并停止Mac上端口8080上运行的进程?

在Ubuntu上,这有效:

ps -aux

我可以找到流程并运行:

kill -9 pid

ps -aux 似乎不起作用,如何在Mac OS X Lion上执行此操作?



3
不,不,不,请,请kill -9 pid等到您尝试使用后再使用kill pid。许多进程将具有信号处理程序,这些信号处理程序将清理它们对资源的使用,清理关闭连接和其他预关闭任务。如果使用-9杀死,则该进程将立即终止而不进行清理。大多数情况下,不使用-9进行杀死即可。
道格·哈里斯

Answers:


16

由于历史原因,ps的选项比较混乱且不一致。在OS X Lion上,以下任何一种都可以工作:

ps -ax
ps -e
ps aux # this displays in a different format

我没有方便测试的ubuntu框,但根据手册页ps -aux也不是在此处进行处理的正确方法:

Note that "ps -aux" is distinct from "ps aux". The POSIX and UNIX
standards require that "ps -aux" print all processes owned by a user
named "x", as well as printing all processes that would be selected by
the -a option. If the user named "x" does not exist, this ps may
interpret the command as "ps aux" instead and print a warning. This
behavior is intended to aid in transitioning old scripts and habits. It
is fragile, subject to change, and thus should not be relied upon.


5

如果您希望查找并杀死所有符合字符串的进程,则还可以在Mac OSX上使用以下命令:

ps aux | grep <string> | awk '{print $1}' | <sudo> xargs kill -9

基本上,此操作将查找(grep)当前在系统上运行的所有与匹配的进程,AWK获取PID,这在PS命令中是第二列,最后一个从AWK中获取参数并杀死流程。

仅当当前用户无权终止进程并且您在系统上具有SUDO访问权限时,才使用SUDO。


3

我相信ps -efMac几乎等同ps -aux于Linux。

要获得使用端口8080的PID,请执行以下操作: lsof -P | grep 8080

字段映射到:

[mini-nevie:~] nevinwilliams% lsof -P | head -1
COMMAND     PID          USER   FD     TYPE             DEVICE  SIZE/OFF    NODE NAME

我启动时ttcp -rs监听端口5001。

mini-nevie:~] nevinwilliams% lsof -P | grep 5001
ttcp      27999 nevinwilliams    3u    IPv4 0xb70c1f66028d6961       0t0     TCP *:5001 (LISTEN)

实际上,PID 27999对应于ttcp我启动的进程的PID 。


1
您还可以ps aux在OS X上使用(不使用破折号)。ps -ef包括不同的列并使用不同的格式。
Lri

我碰巧目前没有要比较的linux登录名;几年前,IIRC,如果-aux未在特定的unix版本上提供预期的输出,则-ef将... AIX,Linux,SunOS使用-aux,BSD,Solaris需要使用-ef来实现兼容性;我忘记了IRIX是-aux还是-ef。我不记得各自系统的主要区别是什么
内文·威廉姆斯

OS X的aux和Ubuntu的aux和-aux使用相同的格式,但是Ubuntu的-aux在开始时会显示警告。
Lri

1
啊哈...分裂是在SysV和BSD实现之间。
内文·威廉姆斯

1

要保持最新状态,对于macOS:

ps -e | grep python | awk '{print "sudo kill -9",  $1}' | sh

对于Linux:

ps -ax | grep python | awk '{print "sudo kill -9",  $1}' | sh
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.