在macOS系统中,通过命令行结束进程是解决应用程序无响应或占用过多资源的常用方法,与图形界面的“活动监视器”相比,命令行操作更高效,尤其适合远程服务器或无图形界面的环境,以下是详细的操作步骤和注意事项。

获取进程ID(PID)
结束进程前,首先需要找到目标进程的进程ID(PID),最常用的命令是ps和grep组合,要查找名为“Safari”的进程,可以在终端中输入:
ps aux | grep Safari
ps aux会列出所有正在运行的进程及其详细信息,包括用户、PID、CPU和内存占用等;grep Safari则用于筛选包含“Safari”的行,输出结果中第二列的数字即为PID。
user 12345 0.0 0.0 123456 7890 ?? S 10:30 0:00.01 Safari
这里的12345就是Safari的PID。
结束进程的命令
kill命令
kill是最基础的命令,用于向进程发送信号,默认情况下,kill发送的是SIGTERM信号(信号编号15),请求进程正常退出,语法为:

kill PID
结束PID为12345的进程:
kill 12345
如果进程正常退出,任务完成;若进程无响应,可尝试强制结束。
killall命令
killall通过进程名结束所有匹配的进程,无需手动查找PID,适合批量操作,语法为:
killall 进程名
结束所有名为“Safari”的进程:

killall Safari
pkill命令
pkill与killall类似,但支持更灵活的匹配模式,可通过进程名、用户名等筛选进程,语法为:
pkill [选项] 进程名
结束当前用户所有名为“Chrome”的进程:
pkill -u $(whoami) Chrome
强制结束进程(SIGKILL信号)
若进程无法正常响应SIGTERM,可使用SIGKILL信号(信号编号9),强制终止进程,语法为:
kill -9 PID
或
kill -SIGKILL PID
kill -9 12345
注意:SIGKILL会立即终止进程,未保存的数据可能会丢失,应谨慎使用。
常用信号及其作用
以下是kill命令中常用的信号及其含义:
| 信号编号 | 信号名称 | 作用说明 |
|---|---|---|
| 1 | SIGHUP | 挂起进程,常用于让进程重新加载配置文件 |
| 2 | SIGINT | 中断进程,相当于按下Ctrl+C |
| 15 | SIGTERM | 正常终止进程(默认信号) |
| 9 | SIGKILL | 强制终止进程,无法被忽略 |
| 18 | SIGCONT | 继续暂停的进程 |
| 19 | SIGSTOP | 暂停进程,无法被忽略 |
操作示例
假设需要结束一个名为“TextEdit”的无响应应用:
-
查找PID:
ps aux | grep TextEdit
输出:
user 67890 0.0 0.0 234567 8901 ?? R 11:20 0:05.00 TextEditPID为
67890。 -
尝试正常结束:
kill 67890
-
若无响应,强制结束:
kill -9 67890
注意事项
- 权限问题:普通用户只能结束自己的进程,若需结束其他用户的进程,需使用
sudo获取管理员权限。sudo kill 12345
- 系统进程:谨慎结束系统关键进程(如内核进程),可能导致系统不稳定。
- 数据丢失风险:强制结束前,建议保存未保存的工作。
相关问答FAQs
Q1: 如何通过命令行查看某个进程的详细信息?
A1: 使用ps命令结合grep和-p选项可查看指定PID的详细信息,查看PID为12345的进程详情:
ps -p 12345 -o pid,ppid,user,%cpu,%mem,command
此命令会列出进程ID、父进程ID、用户、CPU占用率、内存占用率和启动命令等详细信息。
Q2: 如果kill命令无法结束进程,可能的原因是什么?
A2: 可能的原因包括:
- 进程处于
uninterruptible sleep(D状态),此时无法通过信号终止,需等待其自行结束; - 权限不足,需使用
sudo提升权限; - 进程已僵死(Zombie状态),此时需重启系统或等待父进程回收,可通过
ps aux | grep Z检查僵死进程。
