Linux进程管理
在 Linux 系统中,进程管理是系统运维和日常操作的重要部分。以下是常用的进程管理命令及其用途:
1. 查看进程
-
ps
查看当前进程的快照。ps aux # 查看所有运行中的进程(BSD 格式) ps -ef # 查看所有进程(标准格式) ps -u user # 查看特定用户的进程 ps -p {pid} -f
-
top
/htop
实时动态查看进程和系统资源占用(htop
是增强版,需安装)。top # 交互式界面,按 `q` 退出 htop # 更友好的界面(支持鼠标操作)
-
pstree
以树状结构显示进程关系。pstree -p # 显示进程及其 PID
2. 终止进程
-
kill
通过进程 ID (PID) 终止进程。kill -9 PID # 强制终止进程(SIGKILL) kill -15 PID # 优雅终止进程(SIGTERM,默认)
-
pkill
通过进程名终止进程。pkill -9 nginx # 强制终止所有名为 "nginx" 的进程
-
killall
终止所有匹配名称的进程。killall -9 python # 强制终止所有名为 "python" 的进程
3. 进程优先级
-
nice
启动进程时指定优先级(范围:-20 最高优先级,19 最低)。nice -n 10 command # 以较低优先级运行命令
-
renice
修改已运行进程的优先级。renice -n 5 -p PID # 修改指定 PID 的优先级为 5
4. 后台进程管理
-
&
将进程放到后台运行。command & # 后台运行命令
-
jobs
查看当前终端后台任务。jobs -l # 显示后台任务及其 PID
-
fg
/bg
将任务切换到前台(fg
)或继续后台运行(bg
)。fg %1 # 将任务 1 切换到前台 bg %2 # 将任务 2 继续在后台运行
-
nohup
退出终端后仍保持进程运行。nohup command & # 忽略 SIGHUP 信号,日志默认写入 nohup.out
5. 进程搜索
pgrep
根据名称查找进程 PID。pgrep -u root nginx # 查找 root 用户的 nginx 进程 PID
6. 监控工具
-
vmstat
查看系统资源使用情况(CPU、内存、IO 等)。vmstat 1 # 每秒刷新一次
-
pidstat
(需安装sysstat
)
监控进程的 CPU、内存等资源占用。pidstat -p PID 1 # 每秒监控指定 PID
7. 其他实用命令
-
lsof
列出被进程打开的文件。lsof -i :80 # 查看占用 80 端口的进程 lsof -p PID # 查看指定 PID 打开的文件
-
strace
跟踪进程的系统调用。strace -p PID # 跟踪进程的系统调用(调试用)
常见场景示例
-
终止失控的进程
ps aux | grep "bad_process" # 查找 PID kill -9 PID
-
后台运行并保存日志
nohup python script.py > output.log 2>&1 &
-
监控高 CPU 进程
top -o %CPU # 按 CPU 使用率排序
掌握这些命令后,你可以高效地管理 Linux 系统中的进程。如果需要更详细的信息,可以通过 man 命令名
(如 man ps
)查看手册。
在 Linux 中,查看和管理进程的详细信息是系统管理的重要任务。以下是 查看进程详情 的常用命令和技巧,涵盖进程的资源占用、打开文件、环境变量、运行状态等关键信息。
1. 查看进程基本信息
(1) ps
(进程快照)
查看进程的 PID、CPU、内存、启动命令 等基础信息:
ps aux | grep <进程名> # 模糊匹配进程(常用)
ps -ef | grep <进程名> # 标准格式查看
ps -p <PID> -o pid,ppid,cmd,%cpu,%mem,stat # 查看指定进程的详细信息
- 关键字段说明:
%CPU
:CPU 占用率%MEM
:内存占用率STAT
:进程状态(如S
=睡眠,R
=运行,Z
=僵尸进程)PPID
:父进程 ID
(2) top
/ htop
(实时监控)
动态查看进程的 资源占用排名(CPU、内存等):
top # 默认按 CPU 排序
top -p <PID> # 监控指定 PID
htop # 交互式增强版(支持鼠标操作)
- 交互操作:
- 按
P
:按 CPU 排序 - 按
M
:按内存排序 - 按
F1
:查看帮助
- 按
2. 查看进程的详细属性
(1) /proc/<PID>
目录
Linux 将所有进程的详细信息映射到 /proc/<PID>/
目录下,可直接查看:
ls /proc/<PID> # 查看进程的详细信息文件
cat /proc/<PID>/status # 进程状态(名称、PID、内存等)
cat /proc/<PID>/cmdline # 查看进程的完整启动命令
cat /proc/<PID>/environ # 查看进程的环境变量
- 关键文件:
status
:进程状态摘要statm
:内存使用情况io
:I/O 统计信息
(2) pmap
(内存映射)
查看进程的 内存占用分布:
pmap -x <PID> # 显示详细内存映射
3. 查看进程打开的文件和网络连接
(1) lsof
(列出打开文件)
查看进程打开的文件、目录、网络连接等:
lsof -p <PID> # 查看指定进程打开的文件
lsof -i :80 # 查看占用 80 端口的进程
lsof -u <用户名> # 查看用户打开的文件
- 常用选项:
-i
:网络连接-c <进程名>
:按进程名过滤
(2) netstat
/ ss
(网络连接)
查看进程的 网络连接状态:
netstat -tulnp | grep <PID> # 查看进程的网络连接(旧版)
ss -tulnp | grep <PID> # 更快的替代方案(推荐)
4. 查看进程的线程和调用栈
(1) pstree
(进程树)
显示进程的 父子关系 和线程:
pstree -p <PID> # 树状显示进程及线程
(2) strace
(系统调用跟踪)
监控进程的 系统调用(调试用):
strace -p <PID> # 实时跟踪进程的系统调用
strace -e open,read <命令> # 跟踪命令的特定系统调用
(3) gdb
(调试器附加)
深入分析进程的运行状态(需谨慎使用):
gdb -p <PID> # 附加到运行中的进程
5. 查看进程的资源限制
(1) ulimit
查看当前 shell 的资源限制:
ulimit -a # 显示所有限制(如打开文件数、栈大小等)
(2) /proc/<PID>/limits
查看指定进程的资源限制:
cat /proc/<PID>/limits # 显示进程的软/硬限制
6. 统计进程的资源使用
(1) pidstat
(综合监控)
监控进程的 CPU、内存、IO 等(需安装 sysstat
):
pidstat -p <PID> 1 # 每秒刷新一次统计信息
pidstat -d -p <PID> # 监控磁盘 I/O
(2) ps -eo
(自定义输出)
按需显示进程的特定字段:
ps -eo pid,ppid,cmd,%cpu,%mem --sort=-%mem | head # 按内存排序
常见问题排查示例
-
进程卡死
top # 找到高 CPU/内存的 PID strace -p <PID> # 检查系统调用是否阻塞 kill -9 <PID> # 强制终止
-
内存泄漏
pmap -x <PID> # 查看内存分布 cat /proc/<PID>/status | grep VmRSS # 检查实际内存占用
-
端口冲突
lsof -i :8080 # 查看占用端口的进程
总结
需求 | 命令 |
---|---|
查看进程基本信息 | ps aux / top |
查看进程环境变量 | cat /proc/<PID>/environ |
查看打开的文件 | lsof -p <PID> |
监控资源占用 | pidstat / htop |
分析系统调用 | strace -p <PID> |
查看网络连接 | ss -tulnp / netstat |
通过组合这些命令,你可以全面掌握 Linux 进程的详细状态!
No Comments