Appearance
进程管理
进程概述
进程状态
| 状态 | 说明 |
|---|---|
| R (Running) | 运行中或就绪 |
| S (Sleeping) | 可中断睡眠 |
| D (Disk Sleep) | 不可中断睡眠 |
| T (Stopped) | 停止状态 |
| Z (Zombie) | 僵尸进程 |
| I (Idle) | 空闲状态 |
进程优先级
- 优先级范围:-20 到 19
- 数值越小优先级越高
- 默认优先级:0
ps - 查看进程
基本用法
bash
ps # 当前终端进程
ps -e # 所有进程
ps -A # 所有进程
ps a # 所有终端进程
ps aux # 详细信息(BSD风格)
ps -ef # 详细信息(标准风格)
ps -eF # 更详细信息常用选项
bash
ps -u username # 指定用户的进程
ps -p 1234 # 指定 PID
ps -C nginx # 指定命令名
ps --forest # 树形显示
ps -o pid,ppid,cmd,%mem,%cpu # 自定义输出列
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu # 按CPU排序
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem # 按内存排序输出列说明
| 列 | 说明 |
|---|---|
| PID | 进程 ID |
| PPID | 父进程 ID |
| USER | 用户 |
| %CPU | CPU 使用率 |
| %MEM | 内存使用率 |
| VSZ | 虚拟内存大小 |
| RSS | 物理内存大小 |
| STAT | 进程状态 |
| START | 启动时间 |
| TIME | CPU 时间 |
| COMMAND | 命令 |
查找进程
bash
ps aux | grep nginx
pgrep nginx # 查找进程 PID
pgrep -l nginx # 显示进程名
pgrep -u root nginx # 指定用户
pgrep -P 1234 # 查找子进程
pidof nginx # 查找进程 PIDtop - 动态监控
基本用法
bash
top # 动态显示进程
top -d 5 # 5秒刷新
top -n 10 # 刷新10次后退出
top -p 1234,5678 # 监控指定进程
top -u username # 指定用户
top -b # 批处理模式
top -b -n 1 > output.txt # 输出到文件交互命令
| 命令 | 功能 |
|---|---|
| h | 帮助 |
| q | 退出 |
| k | 终止进程 |
| r | 调整优先级 |
| P | 按 CPU 排序 |
| M | 按内存排序 |
| T | 按时间排序 |
| N | 按 PID 排序 |
| c | 显示完整命令 |
| f | 选择显示字段 |
| 1 | 显示各 CPU |
| u | 指定用户 |
| z | 彩色显示 |
top 输出说明
top - 12:00:00 up 10 days, 2:00, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 100 total, 1 running, 99 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si
MiB Mem : 8000.0 total, 500.0 free, 2000.0 used, 5500.0 buff/cache
MiB Swap: 2000.0 total, 1900.0 free, 100.0 used. 5000.0 avail Mem- load average: 1/5/15分钟平均负载
- us: 用户空间 CPU
- sy: 内核空间 CPU
- id: 空闲 CPU
- wa: 等待 I/O
htop - 增强版监控
bash
htop # 启动 htop
htop -p 1234 # 监控指定进程
htop -u username # 指定用户
htop -t # 树形显示
htop -s PERCENT_CPU # 按 CPU 排序
htop -s PERCENT_MEM # 按内存排序htop 交互命令
| 命令 | 功能 |
|---|---|
| F1 | 帮助 |
| F2 | 设置 |
| F3 | 搜索 |
| F4 | 过滤 |
| F5 | 树形视图 |
| F6 | 排序 |
| F7 | 降低优先级 |
| F8 | 提高优先级 |
| F9 | 终止进程 |
| F10 | 退出 |
kill - 终止进程
信号列表
| 信号 | 编号 | 说明 |
|---|---|---|
| SIGHUP | 1 | 挂起/重新加载配置 |
| SIGINT | 2 | 中断 (Ctrl+C) |
| SIGQUIT | 3 | 退出 |
| SIGKILL | 9 | 强制终止 |
| SIGTERM | 15 | 正常终止(默认) |
| SIGCONT | 18 | 继续 |
| SIGSTOP | 19 | 暂停 |
基本用法
bash
kill 1234 # 发送 SIGTERM
kill -15 1234 # 发送 SIGTERM
kill -TERM 1234 # 发送 SIGTERM
kill -9 1234 # 强制终止
kill -KILL 1234 # 强制终止
kill -HUP 1234 # 重新加载配置
kill -l # 列出所有信号killall - 按名称终止
bash
killall nginx # 终止所有 nginx 进程
killall -9 nginx # 强制终止
killall -u username # 终止用户所有进程
killall -i nginx # 交互式确认
killall -w nginx # 等待进程结束pkill - 按模式终止
bash
pkill nginx # 终止匹配进程
pkill -9 nginx # 强制终止
pkill -u username # 终止用户进程
pkill -f "python script.py" # 匹配完整命令
pkill -t pts/0 # 终止终端进程
pkill -P 1234 # 终止子进程进程控制
后台运行
bash
command & # 后台运行
nohup command & # 忽略挂断信号
nohup command > output.log 2>&1 & # 重定向输出
setsid command # 新会话运行
disown %1 # 从作业列表移除作业控制
bash
jobs # 查看作业
jobs -l # 详细信息
Ctrl + Z # 暂停当前进程
bg %1 # 后台继续
fg %1 # 前台继续
wait %1 # 等待作业完成
wait $! # 等待最后一个后台进程nice - 启动时设置优先级
bash
nice -n 10 command # 优先级 10
nice -n -5 command # 优先级 -5(需要 root)
nice --10 command # 优先级 -10renice - 修改运行中进程优先级
bash
renice -n 5 -p 1234 # 修改进程优先级
renice -n 5 -u username # 修改用户所有进程
renice -n 5 -g groupname # 修改组所有进程pstree - 进程树
bash
pstree # 显示进程树
pstree -p # 显示 PID
pstree -u # 显示用户
pstree -h # 高亮当前进程
pstree -H 1234 # 高亮指定进程
pstree -s # 显示父进程
pstree -a # 显示完整命令
pstree -n # 按 PID 排序
pstree 1234 # 指定进程的子树进程资源限制
ulimit - 资源限制
bash
ulimit -a # 查看所有限制
ulimit -n # 打开文件数
ulimit -u # 用户进程数
ulimit -s # 栈大小
ulimit -v # 虚拟内存
ulimit -m # 物理内存
ulimit -c # 核心转储大小
ulimit -f # 文件大小
ulimit -n 65535 # 设置打开文件数
ulimit -c unlimited # 允许核心转储/etc/security/limits.conf
username soft nofile 65535
username hard nofile 65535
username soft nproc 4096
username hard nproc 4096
* soft core unlimited
* hard core unlimited进程监控工具
vmstat - 虚拟内存统计
bash
vmstat # 内存统计
vmstat 1 # 每秒刷新
vmstat 1 10 # 刷新10次
vmstat -s # 统计信息
vmstat -d # 磁盘统计iostat - I/O 统计
bash
iostat # I/O 统计
iostat 1 # 每秒刷新
iostat -x # 扩展信息
iostat -c # CPU 统计
iostat -d sda # 指定设备mpstat - CPU 统计
bash
mpstat # CPU 统计
mpstat 1 # 每秒刷新
mpstat -P ALL # 所有 CPU
mpstat -P 0 # 指定 CPUpidstat - 进程统计
bash
pidstat # 进程统计
pidstat 1 # 每秒刷新
pidstat -p 1234 # 指定进程
pidstat -d # 磁盘 I/O
pidstat -r # 内存使用
pidstat -u # CPU 使用
pidstat -w # 上下文切换strace - 系统调用跟踪
bash
strace command # 跟踪命令
strace -p 1234 # 跟踪运行中进程
strace -c command # 统计系统调用
strace -e trace=open,read command # 跟踪指定调用
strace -f command # 跟踪子进程
strace -o output.txt command # 输出到文件
strace -T command # 显示调用时间ltrace - 库调用跟踪
bash
ltrace command # 跟踪库调用
ltrace -p 1234 # 跟踪运行中进程
ltrace -c command # 统计库调用
ltrace -e malloc,free command # 跟踪指定函数守护进程
systemctl - systemd 服务管理
bash
systemctl start nginx # 启动服务
systemctl stop nginx # 停止服务
systemctl restart nginx # 重启服务
systemctl reload nginx # 重新加载配置
systemctl status nginx # 查看状态
systemctl enable nginx # 开机自启
systemctl disable nginx # 禁用自启
systemctl is-enabled nginx # 查看是否自启
systemctl is-active nginx # 查看是否运行
systemctl list-units --type=service # 列出所有服务
systemctl list-unit-files --type=service # 列出服务文件
systemctl daemon-reload # 重新加载配置文件journalctl - 日志查看
bash
journalctl # 查看所有日志
journalctl -u nginx # 查看服务日志
journalctl -f # 实时跟踪
journalctl -n 100 # 最近100条
journalctl --since today # 今天的日志
journalctl --since "2023-12-25" # 指定日期
journalctl -p err # 错误级别日志
journalctl -b # 本次启动日志
journalctl -k # 内核日志实用示例
查找并终止进程
bash
ps aux | grep nginx | grep -v grep | awk '{print $2}' | xargs kill
pkill -f "python script.py"
kill $(pgrep -f "node app.js")监控进程资源
bash
top -b -n 1 | head -20
ps aux --sort=-%cpu | head -10
ps aux --sort=-%mem | head -10查找僵尸进程
bash
ps aux | awk '$8 ~ /Z/ {print}'
ps -eo pid,ppid,stat,cmd | grep Z