静态查看进程信息 -- 基于 ps 命令实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态查看进程信息 -- 基于 ps 命令实现相关的知识,希望对你有一定的参考价值。
1、简介 目前 可以 通过 很多种方式 查看 系统进程,top之类的 工具 可以 动态 的获取 进程信息,今天 介绍 静态 获取 进程信息的 工具 -- ps(当然,静态 获取 进程信息 这类工具 肯定 不止 ps,还有 pstree...)
1.1 进程状态
###
### 进程状态 可以 是单个状态,也可以是 多个 状态的组合,例如 Ss、S<
###
## R -- Running.运行中
## S -- Interruptible Sleep.等待调用
## D -- Uninterruptible Sleep.不可中断睡眠
## T -- Stoped.暂停或者跟踪状态
## X -- Dead.即将被撤销
## Z -- Zombie.僵尸进程
## W -- Paging.内存交换
## N -- 优先级低的进程
## < -- 优先级高的进程
## s -- 进程的领导者
## L -- 锁定状态
## l -- 多线程状态
## + -- 前台进程
1.2 参数信息(不断完善)
## -l -- 长格式输出(与 -j 参数 不能同时使用)
## -a -- -a 代表 all
## -x -- x参数会显示没有控制终端的进程
## -u -- 查看特定用户进程
## -j -- 用任务格式来显示进程(与 -l 参数 不能同时使用)
## -f -- 用树形格式来显示进程
## -o -- -o 参数控制输出
## -C -- 显示指定进程
2、ps -l 执行分析
2.1 简介
ps -l 显示自己这次登陆的 bash 相关的进程信息罗列出来
2.2 执行
# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1003 195824 195823 0 80 0 - 5616 wait pts/1 00:00:00 bash
0 R 1003 232370 195824 0 80 0 - 2205 - pts/1 00:00:00 ps
2.3 结果分析
## F -- 进程的标志(process flags),当 flags 值为 1 则表示此子程序只是 fork 但没有执行 exec,为 4 表示此程序使用超级管理员 root 权限
## S -- 进程的状态
## UID -- 进程的拥有用户
## PID -- 进程的 ID
## PPID -- 其父进程的 PID
## C -- CPU使用率,单位为百分比
## PRI -- 优先级(对应 top PR;PR、NI参见 "Linux 操作命令 ps -- 进程查看" 一文)
## NI -- 进程的 NICE 值(优先级)
## ADDR -- ADDR是kernel function,指出该程序在内存的哪个部分,如果是个running的程序,一般就会显示 "-"
## SZ -- SZ代表程序用掉多少内存
## WCHAN -- WCHAN表示目前程序是否运行中,同样的,若为-表示正在运行中
## TTY -- 终端 ID
## TIME -- 进程消耗CPU的时间(运行时长)
## CMD -- 命令的名称和参数
3、ps -aux 执行分析
3.1 简介
罗列出所有的进程信息
3.2 执行
# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 33784 4268 ? Ss Mar06 0:03 /sbin/init
root 2 0.0 0.0 0 0 ? S Mar06 0:00 [kthreadd]
... ...
root 3 0.0 0.0 0 0 ? S Mar06 2:28 [ksoftirqd/0]
3.3 结果分析
## USER -- 进程用户用户名
## PID -- 进程的 ID
## %CPU -- 进程占用的 CPU 百分比
## %MEM -- 占用内存的百分比
## VSZ -- 进程使用虚拟内存大小
## RSS -- 驻留内存中页的大小
## TTY -- 终端 ID
## STAT -- 进程的状态
## START -- 启动进程的时间
## TIME -- 实际使用CPU运行的时间
## COMMAND -- 命令的名称和参数
4、ps -axjf 执行分析
4.1 简介
ps -axjf 连同部分的进程呈树状显示出来
4.2 执行
# ps -axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 2 0 0 ? -1 S 0 0:00 [kthreadd]
2 3 0 0 ? -1 S 0 2:28 \_ [ksoftirqd/0]
... ...
2 237046 0 0 ? -1 S 0 0:00 \_ [kworker/u480:1]
0 1 1 1 ? -1 Ss 0 0:03 /sbin/init
... ...
1 902 902 902 ? -1 Ss 0 0:04 smbd -F
902 1160 902 902 ? -1 S 0 0:00 \_ smbd -F
902 1271 902 902 ? -1 S 0 0:08 \_ smbd -F
4.3 结果分析
## PPID -- 其父进程的 PID
## PID -- 其父进程的 PID
## PGID -- 进程组 PID
## SID -- session 的 ID
## TTY -- 终端 ID
## TPGID -- 前台进程组的 ID;TPGID栏写着-1的都是没有控制终端的进程,也就是守护进程
## STAT -- 启动进程的时间
## UID -- 进程的拥有用户
## TIME -- 实际使用CPU运行的时间
## COMMAND -- 命令的名称和参数
5、ps -afxo 执行分析
5.1 简介
指定 显示的 信息
5.2 执行
## 只显示 进程的 用户信息
## ps -axf -o user
# ps -afxo user
6、ps -C 执行分析
6.1 简介
指定 显示的 进程
6.2 执行
## 只显示 指定的进程
# ps -C smbd
PID TTY TIME CMD
902 ? 00:00:04 smbd
1160 ? 00:00:00 smbd
1271 ? 00:00:08 smbd
# ps -C smbd -jf
UID PID PPID PGID SID C STIME TTY TIME CMD
root 902 1 902 902 0 Mar06 ? 00:00:04 smbd -F
root 1160 902 902 902 0 Mar06 ? 00:00:00 smbd -F
root 1271 902 902 902 0 Mar06 ? 00:00:08 smbd -F
# ps -C smbd -lf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 902 1 0 80 0 - 79182 - Mar06 ? 00:00:04 smbd -F
1 S root 1160 902 0 80 0 - 77195 - Mar06 ? 00:00:00 smbd -F
5 S root 1271 902 0 80 0 - 79182 - Mar06 ? 00:00:08 smbd -F
以上是关于静态查看进程信息 -- 基于 ps 命令实现的主要内容,如果未能解决你的问题,请参考以下文章