您的位置:首页 > 理论基础 > 计算机网络

linux系统网络命令(四)

2015-07-16 21:04 417 查看
一、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 pstree ps