进程挂起的作用
- 释放CPU资源:暂停非紧急任务,让出CPU给高优先级进程。
- 调试与排查:冻结进程状态以便检查资源占用(如
strace
跟踪)。 - 批量控制:暂停一组进程后再统一恢复(如脚本任务管理)。
挂起进程的4种方法
方法1:快捷键挂起(前台进程)
- 在终端中直接启动的进程(如
ping baidu.com
)。 - 按下
Ctrl + Z
,进程立即暂停,输出类似:[1]+ Stopped ping baidu.com
- 进程状态变为
T
(stopped),可通过jobs
命令查看。
方法2:kill命令挂起(后台/前台进程)
- 使用
SIGSTOP
信号强制暂停进程:kill -SIGSTOP <PID> # 替换<PID>为实际进程ID
- 示例:
# 查找进程ID pgrep -f "nginx" # 输出:8852 kill -SIGSTOP 8852 # 挂起Nginx工作进程
方法3:pkill按名称挂起
pkill -STOP "进程名" # 如 pkill -STOP "python3"
方法4:bg/fg结合挂起(后台转前台暂停)
- 启动进程到后台:
sleep 1000 &
- 调入前台再暂停:
fg %1 # 将后台作业1调到前台 Ctrl + Z # 立即挂起
恢复被挂起的进程
场景 | 命令 | 说明 |
---|---|---|
恢复前台运行 | fg %<作业号> |
如 fg %1 |
恢复后台运行 | bg %<作业号> |
如 bg %2 |
通过信号恢复 | kill -SIGCONT <PID> |
如 kill -SIGCONT 8852 |
按名称恢复 | pkill -CONT "进程名" |
如 pkill -CONT "python3" |
关键命令与状态说明
- 查看进程状态:
ps -l -p <PID> # 状态列显示 `T` 表示已挂起 top -p <PID> # 查看进程状态(S列显示`T`)
- 管理挂起任务:
jobs
:列出当前终端所有作业(含挂起状态)。disown -h %1
:断开作业与终端的关联(避免退出终端被终止)。
注意事项
- 权限要求:普通用户只能挂起自己的进程,
root
可挂起所有进程。 - 终端依赖:通过
Ctrl+Z
挂起的进程与终端关联,关闭终端可能导致进程终止(可用nohup
/disown
解绑)。 - 系统稳定性:长期挂起关键进程(如守护进程)可能影响服务可用性。
- 信号说明:
SIGSTOP
:强制暂停(不可拦截)。SIGTSTP
:终端触发的暂停(可被程序捕获处理)。
- 快捷键挂起适用于前台交互进程,kill命令适合精准控制后台进程。
- 恢复进程优先用
SIGCONT
信号,避免重复创建进程。 - 生产环境中慎用挂起操作,可能导致资源死锁或服务中断。
引用说明: 参考Linux内核文档(kernel.org)、GNU Coreutils手册(gnu.org)及Linux man-pages项目(man7.org),信号处理机制依据POSIX标准(IEEE Std 1003.1)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9902.html