当前位置: 首页 > news >正文

如何在 Linux 中彻底终止被 `Ctrl+Z` 挂起的进程?

问题场景

在 Linux 终端操作时,你是否曾遇到过这样的情况?
当运行一个命令(如 ping www.baidu.com)时,不小心按下了 Ctrl+Z,屏幕上显示类似以下内容:

^Z
[2]+  已停止               ping www.baidu.com

此时进程看似“停止”了,但它并没有真正退出
这种挂起(Stopped)的进程会继续占用系统资源,长期不处理可能导致资源浪费。


基础知识:Ctrl+Z 的作用

  • Ctrl+Z 会发送 SIGTSTP 信号,将当前前台进程挂起到后台并暂停运行。
  • 进程状态变为 Stopped(暂停),但仍在后台保留,可通过作业号(如 [2])或 PID 管理。
  • Ctrl+C(终止进程)不同,挂起的进程需要手动清理

解决方案

方法 1:直接终止后台进程

步骤 1:查看所有后台作业
jobs -l   # 列出后台作业及详细信息(包含 PID)

示例输出:

[1]- 12345 Running    nohup my_script.sh &
[2]+ 12346 Stopped    ping www.baidu.com

这里 [2] 是作业号,12346 是进程 PID。


步骤 2:终止指定作业
  • 通过作业号终止(推荐):

    kill %2   # %2 表示作业号为 2 的进程
    
  • 通过 PID 终止

    kill 12346
    

步骤 3:强制终止(顽固进程)

如果普通 kill 无效(进程状态仍为 Stopped),使用 SIGKILL 信号强制终止:

kill -9 12346    # -9 对应 SIGKILL
# 或
kill -9 %2

方法 2:恢复进程到前台后终止

步骤 1:将作业带回前台
fg %2   # 恢复作业号为 2 的进程到前台

此时终端会继续显示 ping 命令的输出。


步骤 2:正常终止

按下 Ctrl+C,进程会立即终止。


关键操作对比

操作快捷键信号效果
暂停进程Ctrl+ZSIGTSTP进程挂起到后台,状态为 Stopped
终止进程Ctrl+CSIGINT进程立即终止,释放资源
强制终止kill -9SIGKILL强制杀死进程,无视清理操作

验证进程是否退出

  1. 检查后台作业列表:

    jobs -l   # 若列表中无目标作业,说明已退出
    
  2. 通过 ps 命令搜索残留进程:

    ps aux | grep ping
    # 若输出中无 `ping www.baidu.com`,则进程已终止
    

扩展知识

1. 管理多个后台作业

  • 恢复运行:将暂停的进程转到后台运行(不终止):

    bg %2    # 让作业号为 2 的进程在后台继续运行
    
  • 查看所有进程(包括其他用户):

    ps aux | grep <进程名>
    

2. 一次性清理所有停止的作业

kill -9 $(jobs -p)   # 强制终止所有后台作业

⚠️ 谨慎操作!确保这些作业可以安全终止。


3. SIGKILL 的风险

kill -9 是最后的终止手段,它会导致进程:

  • 无法执行清理操作(如关闭文件、释放临时资源)。
  • 可能引发数据丢失,仅在其他方法无效时使用。

总结

  1. Ctrl+Z 挂起的进程不会自动退出,需手动终止。
  2. 两种终止方式:
    • 直接通过 kill %作业号kill PID
    • 恢复前台后用 Ctrl+C
  3. 养成习惯:操作后运行 jobs 确认无残留进程。

提示:日常使用中若误按 Ctrl+Z,建议立即清理,避免系统积累大量暂停进程!

相关文章:

  • 前端基础之《Vue(4)—响应式原理》
  • HCIP(网络类型)
  • 文件操作和 IO
  • 数字人文字转语音-TTS--局域网共用一个数字人平台部署 模型存储更改TTS_HOME
  • 【HD-RK3576-PI】Linux制作deb包的方法
  • STM32 HAL库之GPIO示例代码
  • YSlow使用指南
  • FreeRTOS使任务处于阻塞态的API
  • jvm内存如何调优
  • UWB双通道隧道人员定位方案
  • KWDB创作者计划—KWDB:国产分布式多模数据库的创新实践
  • java爬虫案例
  • JAVA SE 自我总结
  • React useEffect
  • 虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解?
  • 双数之和+三数之和+四数之和
  • CyclicBarrier 基本用法
  • 【JS进阶】对象解构与数组解构
  • 基于3A4000及CentOS的银河麒麟V10离线源码编译安装VLC
  • Java八股文背诵 第四天JVM
  • 网站建设基础服务报价/北京seo网络优化招聘网
  • php网站后台开发/百度平台app下载
  • 手机wap网站制作/清博舆情系统
  • 手机真人性做免费视频网站/windows优化大师免费版
  • 东莞做网站网络公司/百度seo快速排名优化服务
  • 网页设计怎么建站点/seo是搜索引擎营销吗