一、ps命令简介
ps命令全称为process status,它用于显示当前系统的进程状态。使用ps可以方便地查看进程的PID、内存占用、执行时间等信息,辅助我们对进程进行监控和管理。
二、ps命令的功能作用
1、查看进程执行状态
ps可以显示每个进程的详细状态,常见的有:
R - 运行(Running)
S - 中断(Sleeping)
D - 不可中断的睡眠(Uninterruptible Sleep)
T - 停止(Stopped)
Z - 僵死(Zombie)
查看进程状态可以判断进程是否正常工作或存在问题,是否被阻塞或结束运行。
2、查找特定进程
ps支持多种方式查找进程:
根据PID查找:ps -p 1234
根据进程名查找:ps -C nginx
根据端口号查找:ps -aef | grep 3306
根据内存使用查找:ps aux --sort -%mem | head
根据CPU使用查找:ps aux --sort -%cpu | head
根据用户名查找:ps -u frank
3、检测系统资源占用情况
ps可以显示每个进程对各种系统资源的占用情况,常见的有:
%CPU - CPU利用率
%MEM - 内存占用率
VSZ - 虚拟内存占用大小
RSS - 物理内存占用大小
COMMAND - 进程对应的程序名
这样可以直观地查看不同进程的资源占用,并分析出占用过高的进程。
4、分析进程关系
ps以树形结构显示进程之间的关系:
PPID - 父进程ID
PID - 进程本身ID
PGID - 进程组ID
SID - 会话ID
三、ps常用参数选项
-A/-e:显示所有进程
-a:显示同一终端下的所有程序
-u:以用户为主的格式显示进程状况
-x:显示无控制终端的进程
--sort:指定排序字段
-o:自定义输出格式
-h:不显示标题信息
-w:宽格式显示提供更多信息
四、ps命令基础案例
1、监控某个用户进程
ps -u root -u user1
2、查找特定进程
ps -C nginx
3、按内存使用排序
ps aux --sort -%mem
4、显示线程信息
ps -e -L -o pid,tid,pcpu,pmem
5、看进程树结构
ps -axjf
6、实时监控进程状态变化
watch -n 1 'ps -ef'
7、杀掉特定进程
kill $(ps aux | grep mysql | awk '{print $2}')
8、查找进程打开的端口
ps aux | grep nginx | grep tcp
五、实战案例
1、按内存利用率排序,找出前10大内存占用进程
ps aux --sort -%mem | tail -n 10
2、显示所有进程的线程信息
ps -e -o pid,tid,pcpu,pmem -
3、输出进程信息至日志文件
ps -ef > /var/log/ps.log
4、查看进程启动时间
ps -eo pid,lstart,cmd
5、树形显示父子进程关系
ps -axjf
6、监控某进程的线程数变化
watch "ps -L -p 1234 | wc -l"
7、查找进程的环境变量信息
ps -p 2135 -o pid,env
8、根据端口列出进程详细信息
ss -tulpn | grep :80 | awk '{print $5}' | xargs -I {} ps -p {} -o pid,ppid,cmd,user
9、批量跟踪进程系统调用
for pid in $(ps aux | awk '{print $2}' | grep nginx); do strace -p $pid -o /tmp/strace.$pid.log; done
10、统计各个状态的进程数
ps -A -o stat | sort | uniq -c
这些实例涵盖了ps各种实用的组合应用,既可以监控进程动态信息,也可以与其他命令配合强大的管理进程。