Mac 怎么强制退出 App:快捷键、程序坞和终端
Mac 上强制退出 App,最快的办法是同时按 Option-Command-Esc,在弹出的「强制退出应用程序」窗口里选中卡住的 App,再点强制退出;同一个窗口也可以从苹果菜单 › 强制退出打开,或者按住 Control 点按程序坞里的 App 图标,选强制退出。动手前先试一次 Command-Q 正常退出,Apple 的说明讲得很清楚,正常退出时 App 还有机会把更改存好,强制退出就没有这一步了。
强制退出只管单个不响应的 App,如果是整台 Mac 都卡死,或者自己重启了,那是另一类问题,可以看Mac 卡死或反复崩溃怎么办。
先正常退出,再考虑强制
鼠标变成转圈的彩球,很多时候是 App 正忙,不一定是死了,导出大文件、同步、读一块慢吞吞的网络盘,都可能让窗口卡一阵再恢复。所以先按这个顺序来:
- App 刚好在保存、导出或拷贝时,先等一分钟左右。
- 点一下别的 App 的窗口,其他地方还能动,说明问题只在这一个 App 上。
- 切回去按 Command-Q,或者从菜单栏里它自己的菜单选退出,App 可能会问你要不要保存打开的文稿。
- 等了足够久还是没反应,再强制退出。
正常退出和强制退出不是快慢之分,正常退出是请 App 自己收尾,它可以把文稿、设置和缓存写成完整的状态再走;强制退出是直接结束进程,还没写进磁盘的东西就没了。
四种强制退出的方法
| 方法 | 怎么做 | 适合什么时候 |
|---|---|---|
| 快捷键 | 按 Option-Command-Esc,选中 App,点强制退出 | App 窗口挡住了整个屏幕,或者菜单栏点不到 |
| 苹果菜单 | 苹果菜单 › 强制退出,选中 App,点强制退出 | 鼠标还能用,只是这个 App 不动了 |
| 程序坞 | 按住 Control 点按程序坞里的图标,选强制退出 | App 在程序坞里有图标 |
| 活动监视器 | 选中进程,点停止按钮,选强制退出 | App 没有窗口和程序坞图标,或者卡住的是某个辅助进程 |
带触控栏的 Mac,Esc 键在触控栏最左边(Apple)。程序坞的做法写在 Apple 的程序坞使用说明里,它同样提醒这样做可能丢失未存储的更改。
如果不响应的是访达,在「强制退出」窗口里选访达,按钮会变成重新开启,访达是 macOS 的一部分,点了会自己重新启动,不存在把它彻底关掉这回事。
辅助进程和后台进程用活动监视器
「强制退出」窗口只列有界面的 App,可很多麻烦出在没有窗口的进程上,比如浏览器的渲染进程、同步助手、菜单栏小工具、更新器,这些都要到活动监视器里找。
- 从应用程序 › 实用工具打开活动监视器。
- 找到对应进程,不响应的进程会标着(未响应)并显示成红色,见 Apple 的活动监视器说明。
- 选中它,点窗口左上角的停止按钮。
- 先选退出,Apple 说这和在 App 里选文件 › 退出一样,如果退出会造成数据丢失或影响别的 App,进程就不会退出。
- 退出没有效果,才选强制退出,进程会马上结束,打开着的文件可能丢数据,依赖这个进程的其他 App 也可能出问题。
有些进程属于别的用户或系统,活动监视器会要求输入管理员密码,这个提示应该让你停下来先弄清它是什么,而不是输完密码继续。怎么查 Mac 上陌生的进程讲了如何从进程名找回它属于哪个 App。
终端里的 kill 和 killall,留到最后
终端命令做的事和活动监视器一样,只是少了几道确认,所以只在图形界面都不响应、而且你已经认出这个进程时才用。
下面两条只查看,不改动任何东西:
pgrep -il appname
ps -axo pid,comm | grep -i appname
把 appname 换成 App 名字里的一段,记下第一列的数字,那是 PID。
请进程退出:
kill PID
killall AppName
killall 的手册页(man killall)写明,它默认给你名下所有同名进程发 TERM 信号,TERM 是请进程退出,写得规矩的 App 会先收尾;但它按名字匹配,一次可能命中好几个进程,像 Helper 这种名字,可能同时匹配到几个不同 App 的助手。
TERM 不管用时,强制版本发的是 KILL:
kill -9 PID
signal 手册页(man signal)说明,KILL 不能被捕获也不能被忽略,进程没有任何收尾的机会,这就是终端里的强制退出,没保存的文稿会丢,正在写的文件也可能写坏。不要为了结束不属于自己的进程加 sudo,root 名下的进程多半是 macOS 本身、安全软件或设备管理工具,停掉它们可能让网络、登录或备份出问题。
强制退出会丢什么
| 内容 | 强制退出之后 |
|---|---|
| 打开的文稿里没保存的修改 | 会丢,App 已经自动存下的部分除外 |
| 正在写入的文件 | 可能不完整或损坏,用之前先检查 |
| 进行中的下载、导出、上传 | 通常中断,重新打开 App 后再来一次 |
| 这次改过的 App 设置 | App 还没写进去的话会丢 |
| 依赖这个进程的其他 App | 可能报错,直到它们重新连上或你重开它们 |
重新打开 App 后,先看看刚才在改的文稿,App 有恢复文件夹或版本历史的话,先去那里找,别急着重做。
App 被强制退出后又自己回来了
强制退出只结束正在跑的那一份进程,管不到是谁启动了它,如果 App 或某个助手刚被结束几秒就又出现,说明有东西在把它拉起来:
- 登录项:打开系统设置 › 通用 › 登录项与扩展,看「登录时打开」和「允许在后台」两栏,Apple 在登录时自动打开项目里有说明。
- LaunchAgent 和 LaunchDaemon:
~/Library/LaunchAgents、/Library/LaunchAgents或/Library/LaunchDaemons里的 plist 可以让 launchd 一直保活这个进程,它一退出就重新启动。 - 主 App:有些助手归某个主 App、同步客户端或厂商更新器管,由它们负责重启。
对一个被 launchd 设为保活的进程反复强制退出,只会进入「退出、重启、再退出」的循环,该做的是关掉对应的登录项或后台项,或者退出管着这个助手的 App。两份列表怎么看见如何关闭 Mac 开机启动项,App 卸掉了助手还在跑的情况见卸载后 App 仍在运行。
用 Mole 的状态页结束进程
如果你在用 Mole,它的状态页会列出正在运行的 App 和进程以及 CPU、内存占用,点行尾的省略号,或者按住 Control 点按这一行,就能看到终止和强制退出:
- 对正在运行的 App 选终止,Mole 会用正常方式请它退出,App 可以弹出它自己的存储提示;不是 App 的进程,则发 TERM。
- 强制退出发的是 KILL,两个操作执行前 Mole 都会再确认一次,强制退出的确认里会提示它立即停止进程,可能丢失未保存的数据。
属于 root 或系统账户的进程、/System 等系统路径下的程序、访达、程序坞、WindowServer,以及名字像 VPN、代理、安全或设备管理软件的进程,Mole 都不给这两个按钮,只显示一行说明。这和在活动监视器里操作是同一件事,同样拦不住 LaunchAgent 再次把进程拉起来。
不要这样做
- 不要因为鼠标在转圈,就强制退出一个还在保存或导出的 App。
- 不要因为某个陌生进程 CPU 或内存数字高,就直接强制退出,先查它属于谁。
- 不要用一个很泛的名字跑
sudo killall。 - 不要把强制退出当成治每天都卡的 App 的办法,更新它、查插件,把能复现的步骤交给开发者。
更新和重启后 App 还是经常卡住,可以按 Apple 的 App 故障排查步骤走一遍:退出再打开、重启 Mac、更新 App 和 macOS,最后删掉 App 重新安装,Apple 也提醒,删除 App 可能连带删掉存在 App 里的数据。
常见问题
Mac 强制退出的快捷键是什么?
Option-Command-Esc,按下后会打开「强制退出应用程序」窗口,选中 App 点强制退出,作用相当于 Windows 上的 Ctrl-Alt-Delete。
键盘没反应时怎么强制退出?
用鼠标,选苹果菜单 › 强制退出,或者按住 Control 点按程序坞里的图标选强制退出;如果什么都点不动,Apple 给的最后办法是按住电源键最多 10 秒直到 Mac 关机,所有 App 里没保存的内容都会丢。
强制退出会把 App 或它的数据删掉吗?
不会,强制退出只是结束正在运行的进程,App 本身和已经保存的文件都还在,丢的只是还没保存的修改。
为什么强制退出后 App 又出现了?
登录项、LaunchAgent 或它所属的主 App 在重新启动它,到登录项与扩展里关掉对应条目,或者退出管着它的 App。