静态查看进程信息 -- 基于 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 命令实现的主要内容,如果未能解决你的问题,请参考以下文章

Linux之topps进程命令

Linux进程管理

Linux--Centos7进程和计划任务

Linux中如何查看进程和控制进程

查看进程

CentOS 7 查看和控制进程