马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在 Linux 终端里干活,最常遇到的不是"命令不会敲",而是"命令敲下去停不下来"——比如复制一个大文件、ping 一台一直通着的机器、或者进了一个改错了的 Vim 退不出来。这时得靠快捷键或者退出命令把程序结束掉。这里把四种最常用的强制退出手段一次讲清:Ctrl+C、Ctrl+D、:q、exit,说明各自管什么场景。
四种退出方式对照
先给一张总表,方便对号入座:
| 操作 | 适用场景 | 是否真的"杀进程" |
Ctrl+C | 中断正在前台运行、卡住等待的命令 | 是,向进程发 SIGINT |
Ctrl+D | 表示输入结束,或退出当前 shell 登录 | 是,关闭标准输入并终止登录会话 |
:q | 退出 Vim 等文本编辑器(未改内容时) | 是,退出编辑器程序 |
exit | 退出 shell 会话、退回上一级环境 | 是,结束登录 shell |
1. Ctrl+C:中断正在跑的命令
用途是终止当前正在运行的程序或命令。典型场景是执行了一个持续等待的命令,比如 ping 某个地址一直输出不停、或者 scp 卡在某个大文件上没反应。此时按住 Ctrl 再点 C,程序会立刻收到中断信号停下并退回提示符。
实验方法很简单:
# 先跑一个会一直等着的命令
ping www.qidao123.com
# 卡在这里时按 Ctrl+C,输出会显示中断统计并回到提示符
需要说明的是,Ctrl+C 只能中断前台进程。如果是 & 放到后台、或者用 nohup / systemd 托管的服务,按它没用,得用 kill 加进程号。
2. Ctrl+D:输入结束 / 退出 shell
在终端里它是"输入流结束"的意思。当程序在等你从标准输入读数据时(比如某些交互式命令),按 Ctrl+D 就告诉它"没了,读完了",程序正常退出。
如果当前正处在远程登录的 shell 里、并且没有别的交互任务在跑,那么单独按一次 Ctrl+D 会退出当前登录会话,效果类似断开 SSH 连接。
# 交互式场景:程序正在等输入,按 Ctrl+D 结束输入
# 直接登录态:按 Ctrl+D 退出当前 shell 会话
区分办法看提示符:如果后面跟着 $,多半是在等一条命令,Ctrl+D 会直接把会话结束;如果后面跟着 >,说明还在等命令输完,按 Ctrl+C 取消这一行更合适。
3. :q:退出 Vim 编辑器
注意前面有个英文冒号,不能只敲 q。在 Vim 普通模式下输入 :q 并回车,表示退出编辑器,前提是你没有做过未保存的修改。
# 在 Vim 里执行
:q 退出编辑器(无未保存改动时)
:q! 强制退出,丢弃改动
:wq 保存并退出
:wq! 强制保存并退出(只读文件时用)
忘记改过没有、退不出去时最容易慌。稳妥做法是先 :q 试一次,被拒绝就改 :q! 放弃改动重来,或者 :wq 存盘走人。改配置改崩了的情况,:q! 基本是救命键。
4. exit:退出 shell 登录
exit 用来退出当前 shell 会话或结束登录。不知道该用哪个时,敲 exit 通常都能解决问题。
# 直接退出
exit
# 从管理员退回普通用户:root 下执行 exit 会落到上一个普通账户
exit
一个特别实用的场景:你 su 到了 root,改完系统配置想退回普通用户,直接 exit 就能回到切换前的身份,比再敲一遍 su 用户名 干净。另外在多层容器或者嵌套 shell 里,多敲几次 exit 会一层层往外退。
什么时候这些键都不灵
如果整个终端已经假死(按了没反应、输出乱跳),那说明前台进程可能吞掉了键盘输入或者卡在内核态,键盘组合就不够用了,要绕到进程层面处理:
# 另开一个终端,按进程名找
ps -ef | grep 进程名
# 定位到具体 PID 后
kill PID # 礼貌请求退出
kill -9 PID # 强制杀死,无法捕获时兜底
生产环境里优先选 kill 而不是 kill -9:前者给进程留了清理收尾的机会,直接 -9 可能留下没写完的磁盘缓存或者半截锁文件。
qidao123.com企服评测-应用市场 编辑提示
本文为齐道123 IT 运维社区的技术整理,汇总 Linux 终端常见强制退出与结束命令的适用边界。上述快捷键与命令仅在你拥有或已获授权的目标机器上使用,请勿对不属于自己的服务器执行强制终止操作。文中 kill -9 属于破坏性手段,实际排障建议按 kill 到 kill -9 的顺序递进,避免误伤关键业务进程。
|