Linux 进程管理命令详解
1. 查看进程信息
1.1 ps 命令 - 查看系统进程快照
ps 命令用于显示当前系统的进程状态快照。
常用参数:
-e:显示所有进程-l:以长格式显示更详细的信息-f:显示完整格式信息,通常与其他选项联用-aux:显示所有用户的进程(BSD风格)-ef:显示所有进程的完整信息(标准风格)
示例:
bash
# 查看所有进程
ps -ef
# 查看指定用户的进程
ps -u username
# 查看进程树
ps -ef --forest
1.2 top 命令 - 查看进程动态信息
top 命令实时显示系统进程的动态信息,包括CPU、内存使用情况等。
常用操作:
Shift + >:向后翻页Shift + <:向前翻页q:退出 topk:杀死指定进程r:调整进程优先级
示例:
bash
# 查看所有进程动态信息
top
# 查看指定进程的信息
top -p PID
# 按内存使用排序
top -o %MEM
# 按CPU使用排序
top -o %CPU
1.3 /proc 目录 - 查看进程详细信息
Linux 系统中,/proc 是一个虚拟文件系统,包含了系统运行时的各种信息,包括进程信息。
常用文件:
/proc/PID/status:进程状态信息/proc/PID/cmdline:进程启动命令/proc/PID/environ:进程环境变量/proc/PID/fd/:进程打开的文件描述符
示例:
bash
# 查看进程1234的状态信息
cat /proc/1234/status
# 查看进程1234的启动命令
cat /proc/1234/cmdline | xargs -0 echo
2. 进程优先级管理
2.1 nice 命令 - 按指定优先级运行进程
nice 命令用于以指定的优先级启动新进程。
语法:
bash
nice [-n NI值] 命令
参数说明:
-n NI值:指定优先级值(NI范围:-20~19)- 数值越小,优先级越高(-20最高)
- 数值越大,优先级越低(19最低)
权限限制:
-
普通用户:
- 只能调整自己的进程
- NI值调整范围:0~19
- 只能调高NI值(降低优先级),不能降低NI值(提高优先级)
- 例如:原本NI值为0,只能调整为大于0的值
-
root用户:
- 可以调整任何用户的进程
- 可以设置NI值为负值(-20~19)
- 可以调高或降低NI值
示例:
bash
# 以较低优先级运行命令(普通用户)
nice -n 10 ./myprogram
# 以较高优先级运行命令(需要root权限)
sudo nice -n -10 ./important_program
2.2 renice 命令 - 改变运行中进程的优先级
renice 命令用于修改已经运行进程的优先级。
语法:
bash
renice [优先级] -p PID
renice [优先级] -u 用户名
renice [优先级] -g 组名
示例:
bash
# 修改进程1234的优先级为10
renice 10 -p 1234
# 修改用户alice所有进程的优先级为5
renice 5 -u alice
# 修改进程组456的优先级为-5(需要root权限)
sudo renice -5 -g 456
3. 进程前后台管理
3.1 jobs 命令 - 查看后台进程
jobs 命令用于显示当前shell会话中的后台作业(进程)。
常用选项:
-l:显示作业的PID-p:仅显示作业的进程组ID-r:仅显示运行中的作业-s:仅显示停止的作业
示例:
bash
# 查看所有后台作业
jobs
# 查看后台作业并显示PID
jobs -l
# 查看运行中的后台作业
jobs -r
3.2 bg 命令 - 将挂起的进程在后台运行
bg 命令用于将挂起(暂停)的作业放到后台继续运行。
语法:
bash
bg [作业号]
示例:
bash
# 将最近挂起的作业放到后台运行
bg
# 将作业1放到后台运行
bg 1
3.3 fg 命令 - 把后台进程放到前台运行
fg 命令用于将后台作业放到前台运行。
语法:
bash
fg [作业号]
示例:
bash
# 将最近的后台作业放到前台运行
fg
# 将作业2放到前台运行
fg 2
3.4 常用快捷键
-
Ctrl + Z:将当前前台进程挂起并放到后台
- 进程状态变为"Stopped"
- 可以使用
bg命令让其在后台继续运行 - 可以使用
fg命令将其调回前台
-
& 符号:在后台运行命令
bash# 在后台运行程序 ./test & # 在后台运行命令并将输出重定向到文件 ./long_running_script.sh > output.log 2>&1 &
3.5 实用示例
bash
# 示例1:启动、挂起、恢复进程
$ ./my_script.sh # 前台运行
^Z # 按 Ctrl+Z 挂起
[1]+ Stopped ./my_script.sh
$ bg 1 # 在后台继续运行
[1]+ ./my_script.sh &
$ fg 1 # 调回前台运行
# 示例2:查看和管理后台作业
$ sleep 100 &
[1] 12345
$ sleep 200 &
[2] 12346
$ jobs -l # 查看所有后台作业
[1]- 12345 Running sleep 100 &
[2]+ 12346 Running sleep 200 &
$ fg 2 # 将作业2调回前台
sleep 200
^C # 按 Ctrl+C 终止
4. 总结
| 命令类别 | 主要命令 | 功能描述 | 常用场景 |
|---|---|---|---|
| 进程查看 | ps, top, /proc |
查看进程状态和信息 | 系统监控、故障排查 |
| 优先级管理 | nice, renice |
调整进程优先级 | 资源分配、性能优化 |
| 前后台管理 | jobs, bg, fg |
管理进程前后台运行 | 多任务处理、会话管理 |