这里从最常用到最“强力”的顺序列出:

Ctrl + C (最常用、最推荐)
这是最基本、最安全、也是最常用的方法,它的作用是向当前正在运行的程序发送一个 中断信号。
-
适用场景:
- 程序正在运行,但你可以通过键盘与终端交互。
- 程序没有卡死,只是需要你提前终止它(一个
ping命令、一个tail -f命令)。 - 程序正在等待你的输入,但你不想继续了。
-
如何操作:
- 确保你的终端窗口是活动状态(光标在闪烁)。
- 按住
Control键,再按C键。 - 你会看到终端换行,并提示符 或 重新出现,表示命令已被终止。
-
示例:
(图片来源网络,侵删)# 运行一个 ping 命令 ping google.com # PING google.com (142.250.196.142): 56 data bytes # 64 bytes from par10s01-in-f14.1e100.net (142.250.196.142): icmp_seq=1 time=15. ms # 64 bytes from par10s01-in-f14.1e100.net (142.250.196.142): icmp_seq=2 time=14. ms # ... (按 Ctrl + C) # --- google.com ping statistics --- # 2 packets transmitted, 2 received, 0% packet loss, time 1002ms # rtt min/avg/max/stddev = 14.058/14.529/15.000/0.471 ms # $ # 命令已成功终止,提示符返回
Ctrl + Z (挂起/暂停)
这个方法不会直接结束命令,而是将当前进程 挂起,并将其置于后台。
-
适用场景:
- 你想暂停一个长时间运行的命令,但又不想关闭它,以便稍后可以继续。
- 你想暂时从当前任务中切换出来,去做别的事情。
-
如何操作:
- 按住
Control键,再按Z键。 - 你会看到终端提示
[1] + 12345 suspended command_name这样的提示。 - 进程已经暂停,但并未关闭,你可以通过
jobs命令查看所有被挂起的任务。
- 按住
-
后续操作:
(图片来源网络,侵删)- 将进程恢复到前台继续运行:
fg(foreground) - 让进程在后台继续运行:
bg(background) - 彻底结束被挂起的进程:先用
jobs查看任务编号([1]),然后使用kill %1来结束它。
- 将进程恢复到前台继续运行:
-
示例:
# 运行一个长时间任务 sleep 100 # (按 Ctrl + Z) # [1] + 67890 suspended sleep 100 # $ # 现在任务被挂起了,我们可以查看它 jobs # [1] + suspended sleep 100 # 如果想彻底结束它 kill %1 # [1] + 67890 terminated sleep 100
Ctrl + D (发送文件结束符 EOF)
Ctrl + D 的作用是向程序发送一个 文件结束符,对于大多数命令行程序来说,当它们从标准输入接收到 EOF 时,会认为输入已经结束,然后正常退出。
-
适用场景:
- 程序正在等待你的输入(
cat命令等待你从键盘输入内容)。 - 某些脚本或命令在读取完所有输入后会自动退出。
- 程序正在等待你的输入(
-
如何操作:
- 在一个等待输入的命令提示下,直接按
Ctrl + D。 - 程序会立即退出。
- 在一个等待输入的命令提示下,直接按
-
示例:
# 使用 cat 命令,它会直接显示你输入的内容 cat # Hello World (你输入的内容) # Hello World (cat 显示的内容) # This is a test. # This is a test. # (按 Ctrl + D) # $ # cat 命令接收到 EOF,退出并返回提示符
注意:如果一个程序正在进行某个计算或任务,而不是等待输入,Ctrl + D 可能不会立即终止它,Ctrl + C 更有效。
如果以上方法都无效:强制终止 (杀手锏)
如果某个进程卡死、无响应,Ctrl + C 和 Ctrl + Z 都不起作用,你需要使用 kill 命令来强制结束它。
步骤 1: 找到进程 ID (PID)
你需要找到要结束的进程的 ID。
-
使用
ps命令:# 查找所有与 "chrome" 相关的进程 ps aux | grep chrome # USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND # myuser 12345 5.2 8.1 512345 845678 ?? S 10:30 2:34 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome # myuser 23456 0.1 0.0 0 0 ?? R 10:31 0:00 grep chrome
PID列的数字(12345)就是你要找的进程 ID。 -
使用
Activity Monitor(活动监视器):- 打开“活动监视器”(可以在“应用程序” > “实用工具”里找到,或用 Spotlight 搜索)。
- 找到你想要结束的进程,记下它的 PID。
步骤 2: 使用 kill 命令结束进程
kill 命令通过向进程发送不同的信号来控制它,默认情况下,它发送的是 SIGTERM (信号 15),这是一个“温柔”的终止请求,允许程序进行清理工作。
-
kill PID(温柔地杀死):kill 12345
这是最先应该尝试的
kill命令,如果进程响应,它会优雅地退出。 -
kill -9 PID(强制杀死):kill不起作用,说明进程可能已经无法处理信号,这时你需要使用-9选项,它发送SIGKILL(信号 9) 信号,强制操作系统立即终止该进程,不给它任何清理的机会。kill -9 12345
警告:
kill -9是最后的手段,强制终止可能会导致数据丢失或文件损坏(如果一个程序正在写入文件时被强制终止)。
总结表格
| 快捷键/命令 | 作用 | 适用场景 | 强度 |
|---|---|---|---|
Ctrl + C |
发送中断信号 | 终止正在运行且响应正常的程序 | 温和 (首选) |
Ctrl + Z |
挂起进程 | 暂停程序,稍后可恢复 | 暂停 |
Ctrl + D |
发送文件结束符 | 程序在等待输入时,结束输入并退出 | 温和 (特定场景) |
kill PID |
发送 SIGTERM 信号 |
当 Ctrl + C 无效时,尝试优雅地结束进程 |
中等 |
kill -9 PID |
发送 SIGKILL 信号 |
当进程卡死,kill 也无效时,强制终止 |
强力 (最后手段) |
对于绝大多数日常使用情况,Ctrl + C 就足够了,记住这个,能解决你 99% 的需求。
