菜鸟科技网

Mac终端如何快速结束命令?

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

Mac终端如何快速结束命令?-图1
(图片来源网络,侵删)

Ctrl + C (最常用、最推荐)

这是最基本、最安全、也是最常用的方法,它的作用是向当前正在运行的程序发送一个 中断信号

  • 适用场景

    • 程序正在运行,但你可以通过键盘与终端交互。
    • 程序没有卡死,只是需要你提前终止它(一个 ping 命令、一个 tail -f 命令)。
    • 程序正在等待你的输入,但你不想继续了。
  • 如何操作

    1. 确保你的终端窗口是活动状态(光标在闪烁)。
    2. 按住 Control 键,再按 C 键。
    3. 你会看到终端换行,并提示符 或 重新出现,表示命令已被终止。
  • 示例

    Mac终端如何快速结束命令?-图2
    (图片来源网络,侵删)
    # 运行一个 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 (挂起/暂停)

这个方法不会直接结束命令,而是将当前进程 挂起,并将其置于后台。

  • 适用场景

    • 你想暂停一个长时间运行的命令,但又不想关闭它,以便稍后可以继续。
    • 你想暂时从当前任务中切换出来,去做别的事情。
  • 如何操作

    1. 按住 Control 键,再按 Z 键。
    2. 你会看到终端提示 [1] + 12345 suspended command_name 这样的提示。
    3. 进程已经暂停,但并未关闭,你可以通过 jobs 命令查看所有被挂起的任务。
  • 后续操作

    Mac终端如何快速结束命令?-图3
    (图片来源网络,侵删)
    • 将进程恢复到前台继续运行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 命令等待你从键盘输入内容)。
    • 某些脚本或命令在读取完所有输入后会自动退出。
  • 如何操作

    1. 在一个等待输入的命令提示下,直接按 Ctrl + D
    2. 程序会立即退出。
  • 示例

    # 使用 cat 命令,它会直接显示你输入的内容
    cat
    # Hello World (你输入的内容)
    # Hello World (cat 显示的内容)
    # This is a test.
    # This is a test.
    # (按 Ctrl + D)
    # $
    # cat 命令接收到 EOF,退出并返回提示符

注意:如果一个程序正在进行某个计算或任务,而不是等待输入,Ctrl + D 可能不会立即终止它,Ctrl + C 更有效。


如果以上方法都无效:强制终止 (杀手锏)

如果某个进程卡死、无响应,Ctrl + CCtrl + 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% 的需求。

分享:
扫描分享到社交APP
上一篇
下一篇