在Linux系统中,查看进程执行情况有多种常用命令和工具,以下是详细的分类说明:
ps(Process Status)ps aux # 查看所有用户的所有进程(BSD格式)
ps -ef # 查看所有进程(标准UNIX格式)
ps -u <用户名> # 查看指定用户的进程
ps -p <PID> -o lstart # 查看进程的启动时间
PID(进程ID)、%CPU(CPU占用)、%MEM(内存占用)、COMMAND(命令)、STAT(进程状态,如S=睡眠、R=运行)。top / htop(动态监控)top # 实时动态查看进程(按CPU排序)
htop # 增强版top(需安装:`sudo apt install htop`)
P(按CPU排序)、M(按内存排序)、q(退出)、k(杀死进程)。pstree(树形结构)pstree -p # 显示进程树(包含PID)
pstree <用户名> # 查看指定用户的进程树
pgrep / pkill(快速查找/终止)pgrep -l <进程名> # 根据名称查找PID(如 `pgrep -l nginx`)
pkill <进程名> # 终止指定名称的进程
pidstat(详细资源统计)pidstat -u -p <PID> 1 # 查看CPU使用(每秒刷新)
pidstat -r -p <PID> # 查看内存使用
pidstat -d -p <PID> # 查看磁盘I/O
sudo apt install sysstat(基于sysstat包)。vmstat(系统整体资源)vmstat 1 # 每秒刷新系统资源(CPU、内存、I/O等)
lsof(打开的文件/网络连接)lsof -p <PID> # 查看进程打开的文件
lsof -i :80 # 查看占用80端口的进程
netstat / ss(网络连接)netstat -tulnp # 查看监听端口及对应进程
ss -tulnp # 更快的替代工具(推荐)
strace(系统调用跟踪)strace -p <PID> # 跟踪进程的系统调用
strace -c <命令> # 统计命令执行的系统调用
gdb(高级调试)gdb -p <PID> # 附加到进程进行调试(需权限)
journalctl(Systemd日志)journalctl -u <服务名> # 查看服务的日志(如 `-u nginx`)
/var/log 目录cat /var/log/syslog # 查看系统日志(Ubuntu/Debian)
cat /var/log/messages # 查看系统日志(CentOS/RHEL)
# 查找并杀死占用CPU高的进程
ps aux | sort -nk +3 | tail
kill -9 <PID>
# 持续监控某进程的资源
watch -n 1 "ps -p <PID> -o %cpu,%mem,cmd"
| 需求 | 命令 |
|---|---|
| 快速查看所有进程 | ps aux 或 top |
| 查看进程树 | pstree -p |
| 实时监控资源 | htop 或 pidstat |
| 网络连接 | ss -tulnp |
| 跟踪系统调用 | strace -p <PID> |
| 杀死进程 | pkill <进程名> |
根据具体需求选择合适的工具,组合使用能更高效地分析问题!