给网站做排名优化学什么好处,大邑做网站,学做网站的书,注册一个免费的网站吗PS 例程大全#x1f4da; PS 基础语法ps [options]#x1f527; 常用选项组合组合说明输出内容ps auxBSD风格#xff0c;最常用所有用户的所有进程ps -efUNIX/标准风格完整格式列表ps -eF扩展完整格式更多细节ps -ely长格式详细技术信息ps -ejH显示进程树层次结构ps -eLf显示…PS 例程大全 PS 基础语法ps [options] 常用选项组合组合说明输出内容ps auxBSD风格最常用所有用户的所有进程ps -efUNIX/标准风格完整格式列表ps -eF扩展完整格式更多细节ps -ely长格式详细技术信息ps -ejH显示进程树层次结构ps -eLf显示线程LWP轻量级进程 输出格式控制1.自定义列-o# 自定义显示列 ps -eo pid,ppid,cmd,%cpu,%mem,user,tty,start,time ps -eo pid,comm,args,pcpu,pmem,etime,euid,ruid # 按指定顺序 ps -o pid,user,comm,cpu,mem -e # 显示完整命令 ps -eo pid,user,cmd # 常用列说明 # pid: 进程ID # ppid: 父进程ID # user: 用户名 # comm: 命令名 # cmd: 完整命令 # args: 参数 # %cpu: CPU使用率 # %mem: 内存使用率 # time: 累计CPU时间 # etime: 进程运行时间 # vsz: 虚拟内存大小(KB) # rss: 物理内存大小(KB) # tty: 控制终端 # stat: 进程状态 # start: 启动时间 # nice: 优先级 # c: CPU利用率 # sz: 内存页大小 # wchan: 等待通道2.排序输出# 按CPU使用率排序降序 ps aux --sort-%cpu # 按内存使用率排序降序 ps aux --sort-%mem # 按启动时间排序 ps aux --sortstart # 按进程ID排序 ps aux --sortpid # 多级排序 ps aux --sort-%cpu,%mem 进程选择1.按用户筛选# 显示指定用户的进程 ps -u root ps -U www-data ps -u $(whoami) # 当前用户 ps aux | grep ^username # 过滤用户注意^ # 显示所有用户进程 ps aux ps -eF2.按进程ID筛选# 显示指定PID ps -p 1234 ps -p 1234,5678 # 显示父进程的所有子进程 ps --ppid 1234 # 显示会话ID的进程 ps -s 45673.按终端筛选# 显示特定终端的进程 ps -t pts/0 ps -t tty1 # 显示有终端的进程 ps -a ps -at # 显示所有进程包括无终端 ps aux4.按命令名筛选# 显示指定命令的进程 ps -C bash ps -C nginx,apache2 ps -C python3 -o pid,cmd,user 进程状态详解1.STAT 状态码代码含义R运行中或可运行S可中断的睡眠D不可中断的睡眠通常IOZ僵尸进程T停止状态t跟踪/调试中停止X死亡不应该看到高优先级N低优先级L有页面被锁定在内存s会话领导者l多线程前台进程组2.状态查看示例# 查看进程状态 ps -eo pid,stat,cmd # 查找僵尸进程 ps aux | grep Z ps -eo pid,stat,cmd | grep ^.* Z # 查找停止的进程 ps -eo pid,stat,cmd | grep T # 查看进程优先级 ps -eo pid,nice,cmd️ 实用例程1.系统监控# 查看CPU使用率最高的进程 ps aux --sort-%cpu | head -10 # 查看内存使用率最高的进程 ps aux --sort-%mem | head -10 # 查看总进程数 ps aux | wc -l ps -e --no-headers | wc -l # 查看每个用户的进程数 ps -eo user | sort | uniq -c | sort -nr2.服务管理# 查找服务进程 ps aux | grep nginx ps -C nginx -o pid,cmd,user,%cpu,%mem # 查找Java进程 ps aux | grep java ps -C java -o pid,user,cmd,pcpu,pmem # 查找Docker容器进程 ps aux | grep docker # 查找特定端口的进程 ps aux | grep :803.进程树查看# 显示进程树 pstree pstree -p # 显示PID pstree -u # 显示用户名 pstree -a # 显示命令行参数 # 用ps显示层次结构 ps -ejH ps axjf # 显示森林 ps -eo pid,ppid,cmd --forest # 树形结构 # 查看特定进程的树 ps -eo pid,ppid,cmd --forest | grep -A 5 nginx4.资源分析# 查看进程内存使用详情 ps -eo pid,user,cmd,%mem,rss,vsz,size --sort-rss | head -20 # 查看进程打开文件数需要lsof ps aux | grep process_name lsof -p PID | wc -l # 查看进程启动时间 ps -eo pid,user,cmd,start,etime # 查看进程运行时间 ps -eo pid,cmd,etime | grep python 高级诊断1.线程查看# 显示线程LWP ps -eLf ps -T -p PID # 特定进程的线程 ps -L -p PID -o pid,tid,pcpu,cmd # 线程详细信息 ps -eo pid,lwp,cmd,nlwp,%cpu,%mem | head -20 # 查找多线程进程 ps -eo pid,cmd,nlwp | sort -k3 -nr | head -102.安全相关# 查看进程的真实和有效用户 ps -eo pid,user,euser,ruser,cmd # 查看进程的真实和有效组 ps -eo pid,group,egroup,rgroup,cmd # 查看SUID/SGID程序 ps -eo pid,user,group,cmd | grep -E root|setuid # 查看网络相关进程 ps -eo pid,user,cmd | grep -E (ssh|telnet|ftp)3.性能分析# 查看进程的CPU亲和性 ps -eo pid,cmd,psr # psr 处理器编号 # 查看进程调度策略 ps -eo pid,cmd,policy # policy: TS分时, FFFIFO, RR轮询 # 查看进程等待的通道 ps -eo pid,cmd,wchan # 查看进程的信号掩码 ps -eo pid,cmd,blocked,caught,ignored,pending 实用单行命令1.系统管理# 杀死僵尸进程 ps aux | awk $8Z {print $2} | xargs kill -9 # 清理无用的进程 ps aux | grep defunct | awk {print $2} | xargs kill -9 # 查找并杀死特定用户的所有进程 ps -u username -o pid | xargs kill -9 # 监控进程变化 watch -n 1 ps aux --sort-%cpu | head -102.开发调试# 查看Python进程 ps aux | grep python | grep -v grep # 查看进程环境变量 ps eww -p PID # 显示环境变量 cat /proc/PID/environ | tr \0 \n # 查看进程打开的文件 lsof -p PID ls -la /proc/PID/fd/ # 查看进程内存映射 pmap PID cat /proc/PID/maps3.容器相关# 查看容器进程 ps aux | grep -E docker|containerd|runc # 查看容器内进程 docker exec container_name ps aux # 查看Kubernetes Pod进程 ps aux | grep -E kubelet|kube-proxy # 查看容器资源使用 docker stats 组合工具1.与 grep 组合# 常用模式排除grep自身 ps aux | grep [n]ginx # 技巧[]使grep不匹配自身 ps aux | grep nginx | grep -v grep # 传统方法 # 精确匹配进程名 ps aux | grep ^root.*bash # 查找多个进程 ps aux | grep -E (nginx|apache|mysql) # 查找监听端口的进程 ps aux | grep -E :[0-9]2.与 awk 组合# 提取特定列 ps aux | awk {print $1, $2, $11} # 统计资源使用 ps aux | awk {cpu$3; mem$4} END {print CPU:, cpu, MEM:, mem} # 按用户统计 ps aux | awk {users[$1]} END {for (u in users) print u, users[u]} # 过滤特定条件 ps aux | awk $3 10.0 {print $0} # CPU使用10% ps aux | awk $4 1.0 {print $0} # 内存使用1%3.与 sort 组合# 多级排序 ps aux | sort -k3,3nr -k4,4nr # 先CPU后内存降序 # 按用户分组排序 ps aux | sort -k1,1 -k3,3nr # 按启动时间排序 ps aux | sort -k9,94.与其他命令组合# 查看进程的完整路径 ps aux | grep process | awk {print $2} | xargs ls -l /proc/{}/exe # 查看进程的cgroup信息 ps aux | grep docker | awk {print $2} | xargs -I{} cat /proc/{}/cgroup # 查看进程的网络连接 ps aux | grep nginx | awk {print $2} | xargs -I{} lsof -p {} 输出格式化1.人类可读格式# 内存显示为MB/GB ps aux --sort-%mem | head -10 | awk {printf %-10s %-10s %-8s %-8s %-8s %-12s %s\n, $1, $2, $3, $4, $5/1024M, $6/1024M, $11} # 时间格式化 ps -eo pid,user,cmd,etime --sortetime | head -10 # 创建自定义报告 ps -eo pid,user,pcpu,pmem,vsz,rss,tty,stat,start,time,cmd --sort-pcpu | head -202.JSON/XML 输出# JSON输出需要新版ps或jq ps -eo pid,user,cmd --formatjson | jq . # CSV输出 ps -eo pid,user,pcpu,pmem,cmd --no-headers --formatcsv # 自定义分隔符 ps -eo pid,user,cmd --no-headers -o pid,user,cmd --separator| 系统诊断脚本1.进程监控脚本#!/bin/bash # monitor_process.sh INTERVAL2 COUNT10 echo 监控进程资源使用情况 echo for ((i1; iCOUNT; i)) do echo -e \n轮次 $i - $(date %H:%M:%S) echo CPU前5: ps aux --sort-%cpu | head -6 echo -e \n内存前5: ps aux --sort-%mem | head -6 sleep $INTERVAL done2.进程分析脚本#!/bin/bash # analyze_process.sh PID$1 if [ -z $PID ]; then echo 用法: $0 PID exit 1 fi if [ ! -d /proc/$PID ]; then echo 进程 $PID 不存在 exit 1 fi echo 进程 $PID 分析报告 echo 1. 基本信息: ps -p $PID -o pid,ppid,user,group,cmd,start,etime echo -e \n2. 资源使用: ps -p $PID -o pcpu,pmem,vsz,rss,time echo -e \n3. 状态信息: cat /proc/$PID/status | grep -E State|Vm|Threads echo -e \n4. 打开文件数: ls -l /proc/$PID/fd 2/dev/null | wc -l echo -e \n5. 内存映射: pmap $PID | tail -13.僵尸进程清理脚本#!/bin/bash # clean_zombies.sh echo 查找僵尸进程... ZOMBIES$(ps aux | awk $8Z {print $2} | tr \n ) if [ -z $ZOMBIES ]; then echo 没有找到僵尸进程 exit 0 fi echo 找到僵尸进程: $ZOMBIES echo 尝试清理... for PID in $ZOMBIES; do PARENT$(ps -o ppid -p $PID) echo 僵尸进程 $PID (父进程 $PARENT) # 尝试杀死父进程 if [ ! -z $PARENT ]; then echo 发送SIGCHLD给父进程 $PARENT kill -s SIGCHLD $PARENT 2/dev/null # 检查是否清理成功 sleep 1 if ps -p $PID /dev/null 21; then echo ❌ 进程 $PID 仍然存在 else echo ✅ 进程 $PID 已清理 fi fi done echo 清理完成⚠️ 注意事项1.权限问题# 普通用户只能看到自己的进程 ps -u $USER # root可以看到所有进程 sudo ps aux # 查看其他用户的进程需要权限 sudo ps -u otheruser2.性能考虑# 避免频繁执行ps aux消耗资源 # 使用top/htop实时监控更好 # 对于大量进程指定列提高性能 ps -eo pid,cmd,pcpu # 使用/proc文件系统获取信息更快 cat /proc/1234/status3.兼容性问题# Linux vs BSD选项差异 ps aux # Linux/BSD通用 ps -ef # UNIX标准 ps -eF # 扩展格式 # 不同系统的输出可能不同 uname -a # 先查看系统信息 速查表常用列说明列名说明示例命令pid进程IDps -eo pid,cmdppid父进程IDps -eo pid,ppid,cmduser用户名ps -eo user,pid,cmdgroup组名ps -eo group,pid,cmd%cpuCPU使用率ps -eo pid,cmd,%cpu%mem内存使用率ps -eo pid,cmd,%memvsz虚拟内存大小(KB)ps -eo pid,cmd,vszrss物理内存大小(KB)ps -eo pid,cmd,rsstty控制终端ps -eo pid,cmd,ttystat进程状态ps -eo pid,cmd,statstart启动时间ps -eo pid,cmd,starttime累计CPU时间ps -eo pid,cmd,timeetime运行时间ps -eo pid,cmd,etimecmd完整命令ps -eo pid,cmdcomm命令名ps -eo pid,commargs命令参数ps -eo pid,argsnice优先级ps -eo pid,cmd,nicepri调度优先级ps -eo pid,cmd,pripsr处理器编号ps -eo pid,cmd,psr状态码速查状态含义常见场景R运行/可运行正在执行或等待CPUS可中断睡眠等待事件完成D不可中断睡眠磁盘IO不可被信号中断Z僵尸进程已结束但父进程未回收T停止被作业控制信号停止t跟踪停止被调试器暂停X死亡进程完全终止高优先级优先级0N低优先级优先级0L页面锁定内存页被锁定s会话领导者进程是会话首进程l多线程进程是多线程的前台进程在终端前台运行这个大全涵盖了 ps 命令的绝大多数用法从基础查询到高级诊断都有示例。掌握这些例程你就能高效地管理和监控系统进程