
技术弄巷
前言
在Linux系统操作和运维中,进程管理是核心技能——不管是让程序脱离终端后台运行,还是优雅停止/重启进程、更新配置不中断服务,都需要掌握专业的进程调度方法。本文聚焦进程后台运行控制和信号式进程管理两大核心场景,整理了最常用、易上手的命令和实操技巧,全程配实例、讲重点,新手也能快速学会管控系统进程。
一、进程后台运行控制
Linux中命令默认在前台终端运行,会占用当前窗口且关闭终端进程就终止,通过以下命令可实现进程后台运行、状态查看和前后台切换,完美解决上述问题。
1. 直接让进程后台运行(不中断、脱离终端)
核心命令:nohup 命令 &
nohup&- 运行后会生成
nohup.out文件,记录进程输出日志
实操实例:让休眠100秒的进程后台运行
nohup sleep 100 &
2. 查看后台运行的任务列表
核心命令:jobs -l
实操实例:
jobs -l
# 输出示例:[1]+ 1234 Running nohup sleep 100 &
# [1]是任务编号,1234是PID
3. 后台任务调回前台运行
核心命令:fg 任务编号
实操实例:将编号1的后台任务调回前台
fg 1
4. 前台运行的任务转入后台(暂停状态)
操作快捷键:Ctrl + Z
- 转入后台后进程为暂停状态,需配合
bg 任务编号恢复运行(拓展技巧)
实操流程:
# 1. 前台运行命令
sleep 100
# 2. 按下Ctrl+Z,进程暂停并转入后台
^Z[1]+ Stopped sleep 100
# 3. 拓展:恢复后台暂停的进程运行
bg 1
二、通过信号管理进程(kill/killall)
Linux中所有进程都能接收系统信号,kill和killall是发送信号的核心命令,通过不同信号可实现正常终止、强制杀死、重新加载配置等操作,是进程管理的必备手段。
1. 核心命令格式
(1)按PID给单个进程发信号:kill
# 格式1:使用信号编号(推荐,简洁)
kill [-信号编号] 进程PID
# 格式2:使用信号名称(直观,可省略SIG)
kill -信号名称 进程PID
# 默认信号:不指定信号时,默认发送15号SIGTERM
kill 进程PID # 等价于kill -15 进程PID
(2)按进程名给所有同名进程发信号:killall
killall [-信号编号/名称] 进程名称
# 适用场景:批量杀死多个同名进程(如httpd、nginx子进程)
killall -9 httpd # 强制杀死所有httpd进程
2. 查看所有系统信号
核心命令:kill -l(l为小写字母L)
- 输出共64种信号,仅需掌握常用3种即可满足90%的运维需求
- 信号分编号和名称,使用时二者等价(如
kill -1 = kill -HUP)
kill -l
# 输出示例(仅展示常用部分)
1) SIGHUP 9) SIGKILL 15) SIGTERM
3. 高频常用信号(重点掌握)
(1)15号 SIGTERM:正常终止进程(默认信号,推荐)
- 特点:优雅终止,给进程时间释放资源、保存数据,是最安全的终止方式
- 适用
- 实操实例
kill 6879 # 省略信号,默认15号
# 等价于
kill -15 6879
kill -SIGTERM 6879
(2)9号 SIGKILL:强制杀死进程(异常终止,紧急使用)
- 特点:强制终止,进程无时间释放资源,可能导致数据丢失/文件损坏
- 适用:进程卡死、无响应,15号信号无法终止时的紧急手段
- 实操实例
kill -9 6893
# 等价于
kill -SIGKILL 6893
(3)1号 SIGHUP:让进程重新读取配置文件(不中断服务)
- 特点:不终止进程,仅通知进程重新加载配置,实现服务配置热更新
- 适用:修改服务配置后(如httpd、nginx),无需重启服务即可生效
- 实操实例(httpd服务配置热更新)
# 1. 启动httpd服务,查看主进程PID
systemctl start httpd
ps -elf | grep httpd # 输出中PPID为1的是主进程,如PID=7194
# 2. 修改httpd配置文件(如修改监听端口为9000)
vim /etc/httpd/conf/httpd.conf # 编辑Listen 9000
# 3. 给httpd主进程发送1号信号,重新加载配置(不中断服务)
kill -1 7194 # 等价于kill -HUP 7194
# 4. 验证配置生效
netstat -tunlp | grep httpd # 查看监听端口已更新为9000
4. 关键前置技巧:查询进程PID/进程名
使用kill/killall前,需先获取进程的PID或进程名,常用查询命令:
# 方式1:模糊查询进程(含PID、进程名)
ps -elf | grep 进程关键词 # 如ps -elf | grep httpd
# 方式2:查询端口对应的进程(精准,常用服务类进程)
netstat -tunlp | grep 端口/进程名 # 如netstat -tunlp | grep 80
总结
- 进程后台运行核心:
nohup 命令 & 启动,jobs -l 查看,fg/bg 编号实现前后台切换; - 信号管理优先原则:正常终止用15号SIGTERM(默认),紧急杀死用9号SIGKILL,配置热更新用1号SIGHUP;
- 命令分工:
kill按PID管理单个进程,killall按进程名批量管理同名进程; - 前置技巧:
ps -elf/netstat -tunlp快速查询进程PID/端口对应进程。
所有命令均为Linux原生命令,无需额外安装,CentOS、Ubuntu等主流发行版通用,直接复制即可实操!
💻 觉得这份Linux进程管理实操指南实用的话,别忘了点赞+收藏,方便后续工作中快速查阅! 📌 关注本公众号,后续会持续更新Linux运维核心实操、系统优化、故障排查等干货内容,从入门到进阶,手把手教你搞定Linux系统管理,让运维工作更轻松~ 👇 评论区聊聊你平时管理进程时遇到的问题,一起交流解决技巧吧!

