在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 <进程名> |
根据具体需求选择合适的工具,组合使用能更高效地分析问题!