linux系统网络命令(四)

一、pstree命令

1、命令简介

        以树状图显示进程,只显示进程的名字,且相同进程合并显示。


2、常用选项及举例

2.1、以树状图显示进程,还显示进程PID:

[root@hpf-linux ~]# pstree -p
init(1)─┬─auditd(937)───{auditd}(938)
        ├─crond(1322)
        ├─dbus-daemon(1041)
        ├─master(1312)─┬─pickup(1485)
        │              └─qmgr(1326)
        ├─mingetty(1337)
        ├─mingetty(1339)
        ├─mingetty(1341)
        ├─mingetty(1343)
        ├─mingetty(1348)
        ├─mingetty(1350)
        ├─nginx(1078)───nginx(1080)
        ├─rpc.statd(997)
        ├─rsyslogd(957)─┬─{rsyslogd}(958)
        │               ├─{rsyslogd}(960)
        │               └─{rsyslogd}(961)
        ├─sshd(1101)───sshd(1351)───bash(1353)───pstree(1753)
        └─udevd(368)─┬─udevd(1346)
                     └─udevd(1347)

2.2、以树状图显示指定运行的pid进程以及子孙进程,如果有-p参数则同时显示每个进程的PID:

[root@hpf-linux ~]# pstree -p 368
udevd(368)─┬─udevd(1346)
           └─udevd(1347)

二、ps命令

1、命令简介

        Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top、htop命令。


2、常用选项

a  显示所有进程

-e 显示所有进程

f  显示程序间的关系

u  指定用户的所有进程

-C<命令> 列出指定命令的状况

x   通常与 a 这个参数一起使用,可列出较完整信息。

-o 自定义要显示的信息

-p<pid> 显示指定pid的进程


3、使用举例

3.1、出目前所有的正在内存当中的程序:

[root@hpf-linux ~]# ps aux        //或者使用ps -ef 两者的结果差不多
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   2900  1412 ?        Ss   Jul15   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Jul15   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Jul15   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    Jul15   0:00 [ksoftirqd/0]
root         5  0.0  0.0      0     0 ?        S    Jul15   0:00 [stopper/0]
root         6  0.0  0.0      0     0 ?        S    Jul15   0:00 [watchdog/0]
......................................

说明:

USER:该 process 属于那个使用者账号的

PID :该 process 的号码

%CPU:该 process 使用掉的 CPU 资源百分比

%MEM:该 process 所占用的物理内存百分比

VSZ :该 process 使用掉的虚拟内存量 (Kbytes)

RSS :该 process 占用的固定的内存量 (Kbytes)

TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。

STAT:该程序目前的状态,主要的状态有

R :该程序目前正在运作,或者是可被运作

S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。

T :该程序目前正在侦测或者是停止了

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

START:该 process 被触发启动的时间

TIME :该 process 实际使用 CPU 运作的时间

COMMAND:该程序的实际指令


3.2、显示指定用户进程

使用"-u"选项后跟用户名来过滤所属用户的进程,多个用户名可以用逗号分隔。

[root@hpf-linux ~]# ps -f -u nobody
UID        PID  PPID  C STIME TTY          TIME CMD
nobody    1815  1814  0 00:26 ?        00:00:00 nginx: worker process

   

3.3、通过cpu或者内存的使用排序进程

        我们在想显示系统中消耗最高CPU或者内存资源的进程时,一般会想到top命令通过键入P或者M来动态由高到低排序的显示,而ps命令中可以用'--sort'指定多个字段,并用逗号分割。除此之外,字段前面还可以跟上'-'或者'+'的前缀来相应地表示递减和递增排序:

[root@hpf-linux ~]# ps aux --sort=-pcpu | head -5
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1   2900  1412 ?        Ss   Jul15   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Jul15   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        S    Jul15   0:00 [migration/0]
root         4  0.0  0.0      0     0 ?        S    Jul15   0:00 [ksoftirqd/0]


3.3、改变显示的列

下面的命令会只显示pid、用户名、cpu、内存、命令列:

[root@hpf-linux ~]#  ps -e -o pid,uname,pcpu,pmem,comm
  PID USER     %CPU %MEM COMMAND
    1 root      0.0  0.1 init
    2 root      0.0  0.0 kthreadd
    3 root      0.0  0.0 migration/0
    4 root      0.0  0.0 ksoftirqd/0
    5 root      0.0  0.0 stopper/0
.........................................


3.4、显示进程运行的时间

运行的时间指的是,进程已经运行的时间。运行时间的列并没有默认显示,需要使用-o选项带入。

[root@hpf-linux ~]# ps -e -o pid,comm,etime
  PID COMMAND             ELAPSED
    1 init               08:13:49
    2 kthreadd           08:13:49
    3 migration/0        08:13:49
    4 ksoftirqd/0        08:13:49
    5 stopper/0          08:13:49
.................................


3.5、通过名字或者进程id显示进程

通过"-C"选项后面加上名字或者命令来搜索进程:

[root@hpf-linux ~]# ps -C nginx
  PID TTY          TIME CMD
 1814 ?        00:00:00 nginx
 1815 ?        00:00:00 nginx

要通过进程id显示进程,就使用"-p"选项,并且还可以通过逗号分隔来指定多个进程id。

[root@hpf-linux ~]# ps -f -p 28,23,45
UID        PID  PPID  C STIME TTY          TIME CMD
root        23     2  0 Jul15 ?        00:00:00 [khubd]
root        28     2  0 Jul15 ?        00:00:00 [khungtaskd]
root        45     2  0 Jul15 ?        00:00:00 [deferwq]

"-C"必须提供精确的进程名,并且它并不能通过部分名字或者通配符查找。为了更灵活地搜索进程列表,通常使用grep命令。

[root@hpf-linux ~]# ps aux |grep nginx
root      1814  0.0  0.0   5380   636 ?        Ss   00:26   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody    1815  0.0  0.0   5564   988 ?        S    00:26   0:00 nginx: worker process                                          
root      1879  0.0  0.0   5980   740 pts/0    S+   00:56   0:00 grep nginx


3.6、将ps转换为类是top命令的实时进程查看器

[root@hpf-linux ~]# watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -5'
Every 10.0s: ps -e -o pid,uname,cmd,pmem,pcpu --so...  Thu Jul 16 01:02:26 2015
  PID USER     CMD                         %MEM %CPU
    1 root     /sbin/init                   0.1  0.0
    2 root     [kthreadd]                   0.0  0.0
    3 root     [migration/0]                0.0  0.0
    4 root     [ksoftirqd/0]                0.0  0.0

        输出会每秒刷新状态,但是这其实跟top不同。你会发现top/htop命令的输出相比上面的ps命令刷新得更频繁。 这是因为top输出是结合了cpu使用值和内存使用值后的排序值。但是上面的ps命令是一个更简单的行为的排序,每次获取一列(像学校的数学),因此它不会像top那样快速更新。 



参考:

http://linux.cn/thread/12046/1/1/

你可能感兴趣的:(linux,PS,pstree)