codetalks-new / notes

About me
4 stars 0 forks source link

[深入理解Linux进程] ps、pstree 命令 #12

Open codetalks-new opened 5 years ago

codetalks-new commented 5 years ago

关于 procps

ps,pstree,top 等一系列命令,都是来自 procps 工具包。 主要包含如下命令。

ps 命令使用帮助

ps 命令兼容三种不同风格的命令选项。

  1. Unix98 选项。这类选项可以合并指定,而且前面必须前置破折号。
  2. BSD选项。区别于上面是前面不能 加破折号。
  3. GNU长选项。前面必须前置两个破折号。

ps的使用帮助分为了6节。参考如下:

 Try 'ps --help <simple|list|output|threads|misc|all>'
  or 'ps --help <s|l|o|t|m|a>'
 for additional help text.

下面的实例也将以此分组进行实践。

常用命令选项

ps --help simple 下面提取的会话领导进程指的是比如 shell 进程一般就是会话领导进程。通过此 shell 创建的进程都属于此会话。

列表筛选选项

ps --help list

以上筛选项基本支持。以逗号,或以空格分隔的多个参数。 例如: ps -u root,nobodyps -p 1 2 3

输出控制

ps --help output

UID        PID  PPID  C STIME TTY          TIME CMD
ubuntu   16225     1  0 08:23 ?        00:00:00 /lib/systemd/systemd --user
UID        PID  PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
ubuntu   16225     1  0 11312  4696   0 08:23 ?        00:00:00 /lib/systemd/systemd --user

-H,f, --forest 继承树,及树状视图。

ubuntu@VM-0-3-ubuntu:~$ ps  -u ubuntu f
  PID TTY      STAT   TIME COMMAND
16975 ?        S      0:00 sshd: ubuntu@pts/1
16976 pts/1    Ss     0:00  \_ -bash
20057 pts/1    R+     0:00      \_ ps -u ubuntu f
ubuntu@VM-0-3-ubuntu:~$ ps  -u ubuntu -H
  PID TTY          TIME CMD
16975 ?        00:00:00 sshd
16976 pts/1    00:00:00   bash
20066 pts/1    00:00:00     ps
ubuntu@VM-0-3-ubuntu:~$
ubuntu@VM-0-3-ubuntu:~$ ps  -u ubuntu j
 PPID   PID  PGID   SID TTY      TPGID STAT   UID   TIME COMMAND
    1 16225 16225 16225 ?           -1 Ss     500   0:00 /lib/systemd/systemd --user
ubuntu@VM-0-3-ubuntu:~$ ps  -u ubuntu -j
  PID  PGID   SID TTY          TIME CMD
16225 16225 16225 ?        00:00:00 systemd
ubuntu@VM-0-3-ubuntu:~$ ps  -u ubuntu l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4   500 16225     1  20   0  45248  4696 ep_pol Ss   ?          0:00 /lib/systemd/systemd --u
ubuntu@VM-0-3-ubuntu:~$ ps  -u ubuntu -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S   500 16225     1  0  80   0 - 11312 ep_pol ?        00:00:00 systemd
LABEL                             PID TTY          TIME CMD
unconfined                      16225 ?        00:00:00 systemd
  UID   PID   PENDING   BLOCKED   IGNORED    CAUGHT STAT TTY        TIME COMMAND
  500 16225  00000000 <28014a03  00001000 <80000000 Ss   ?          0:00 /lib/systemd/systemd
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
ubuntu   16225  0.0  0.5  45248  4696 ?        Ss   08:23   0:00 /lib/systemd/systemd --user
  PID TTY      STAT   TIME  MAJFL   TRS   DRS   RSS %MEM COMMAND
16225 ?        Ss     0:00      0  1391 43856  4696  0.5 /lib/systemd/systemd --user
  PID   STACKP      ESP      EIP TMOUT ALARM STAT TTY        TIME COMMAND
16225 efe876a0 efe869b8 b85899f3     -     - Ss   ?          0:00 /lib/systemd/systemd --user
ubuntu@VM-0-3-ubuntu:~$ ps  -u ubuntu u e
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
ubuntu   16225  0.0  0.5  45248  4696 ?        Ss   08:23   0:00 /lib/systemd/systemd --user LANG=en_US.utf8 PATH=/

-- --no-headers 不要表头。 -- --headers 每页显示表头 -- --cols,--columns,-- width <num> 设定屏幕宽度 -- --rows,--lines <num> 设定屏幕高度。

线程相关

H 把线程当进程显示 -L 显示 LWP,NLWP 列。 -m,m 在进程之后显示 -T 显示 SPID 列。

其他

-c-l 参数配置显示调度类 c 显示真值进程名 k,--sort 指定排序列,多个列可以使用逗号分隔.语法 [+|-]key,[+|-]key,... ,其中 + 表示升序,- 表示降序。

L 显示所有的列标签。 n 显示数字形式 uidwchan S,--cumulative 累加模式,显示已死亡的子进程。 -w,w 不限制输出宽度。 -y 只能跟 -l 搭配,表示不显示 flags 但是显示 rss -V,V, --version 显示 版本。

codetalks-new commented 5 years ago

术语解释

基本术语参考 top 命令说明。

进程标志 (F) 列,输出标记 flags

进程状态码 (STAT,S) 列,输出标记 s,stat,state