linux中adrtd是什么进程,linux概念之进程分析

http://blog.csdn.net/kevinx_xu/article/details/8178746  /proc 详解

进程层次

[root@109-com1 scripts]# ps -ef|grep udevd

root       431     1  0 Aug28 ?        00:00:00 /sbin/udevd -d

root      1199   431  0 Aug28 ?        00:00:00 /sbin/udevd -d

root     19382   431  0 Aug30 ?        00:00:00 /sbin/udevd -d

[root@109-com1 scripts]# ps -ef|grep 1161

root      1161     1  0 Aug28 ?        00:00:03 /usr/libexec/postfix/master

postfix   1176  1161  0 Aug28 ?        00:00:01 qmgr -l -t fifo -u

postfix  30258  1161  0 13:35 ?        00:00:00 pickup -l -t fifo -u

root      1383     1  0 Aug28 ?        00:00:02 /usr/sbin/sshd

root     29538  1383  0 Sep03 ?        00:00:01 sshd: root@pts/2

root     29540 29538  0 Sep03 pts/2    00:00:00 -bash

root      2088 29540  0 14:08 pts/2    00:00:00 ps -ef

rpcuser  29223     1  0 Sep03 ?        00:00:00 rpc.statd --no-notify

rpc      29426     1  0 Sep03 ?        00:00:00 rpcbind

rpcuser  29433     1  0 Sep03 ?        00:00:00 rpc.statd --no-notify

[root@221-comecs tmp]# pstree -p

├─safe_asterisk(3732)───asterisk(3735)─┬─{asterisk}(3737)

│                                      ├─{asterisk}(3738)

│                                      ├─{asterisk}(3739)

│                                      ├─{asterisk}(3740)

│                                      ├─{asterisk}(3741)

│                                      ├─{asterisk}(3742)

│                                      ├─{asterisk}(3743)

[root@221-comecs tmp]# ps -Lf 3735  进程共启动了n个线程

UID        PID  PPID   LWP  C NLWP STIME TTY      STAT   TIME CMD

root      3735  3732  3735  0   61 Oct09 ?        Sl     0:00 /usr/sbin/asterisk -f -vvvg -c

root      3735  3732  3737  0   61 Oct09 ?        Sl     0:00 /usr/sbin/asterisk -f -vvvg -c

root      3735  3732  3738  0   61 Oct09 ?        Sl     0:00 /usr/sbin/asterisk -f -vvvg -c

root      3735  3732  3739  0   61 Oct09 ?        Sl     0:08 /usr/sbin/asterisk -f -vvvg -c

/proc/stat    总

/proc/loadavg

/proc/sched_debug

/proc/schedstat 总

/proc/pid/schedstat 分

/proc/pid/sched

/proc/pid/stack

/proc/pid/stat    分

/proc/pid/statm

/proc/pid/status

/proc/pid/maps

/proc/pid/smaps

/proc/loadavg文件

[root@109-com1 6939]# cat ../loadavg

0.01 0.03 0.00 2/397 19934

[root@109-com1 6939]# grep run /proc/stat

procs_running 2

每个值的含义为:

参数 解释

lavg_1 (1.0) 1-分钟平均负载

lavg_5 (1.00) 5-分钟平均负载

lavg_15(0.93) 15-分钟平均负载

nr_running (2) 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思

nr_threads (19) 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)

last_pid(301) 最大的pid值,包括轻量级进程,即线程。

假设当前有两个CPU,则每个CPU的当前任务数为4.61/2=2.31

/proc/pid/smaps文件

该文件反映了该进程的相应线性区域的大小

解释说明:

每行数据格式如下:

(内存区域)开始-结束 访问权限 偏移 主设备号:次设备号 i节点 文件。

be8f1000-be906000 rwxp be8f1000 00:00 0 [stack]

Size:相应虚拟地址空间的大小

RSS: 正在使用的物理内存的大小

Shared_Clean: 共享区域的未使用页数

Shared_Dirty: 共享区域已经使用的页数

Private_Clean: 私有区域未使用的页数

Private_Dirty: 私有区域已经使用的页数

/proc/pid/maps文件,上面的smaps的更为详细,maps为列表

该文件反映了进程占用的内存区域

每行数据格式如下:

(内存区域)开始-结束 访问权限 偏移 主设备号:次设备号 i节点 文件。

/proc/pid/statm包含了在此进程中所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。

top命令中看到的VIRT

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

21714 root 20 0 2332m 184m 6984 S 16.9 18.5 3596:10 asterisk

6939 root 20 0 2826m 36m 5916 S 3.7 3.7 226:34.83 FLTService

在/proc/pid/statm中看到的

[root@109-com1 6939]# cat statm

723692 9315 1479 80 0 692850 0

每列含义解释:

2826m*1024/4=723692  top中的PID为6939的VIRT字段2826m

Size (pages)= 723692 任务虚拟地址空间的大小 VmSize/4

36m*1024/4=9315    top中的PID为6939的RES字段36m

Resident(pages)= 9315 应用程序正在使用的物理内存的大小 VmRSS/4

5916/4=1479      top中的PID为6939的SHR字段5916

Shared(pages)= 1479 共享页数

status文件中的VmExe: 320 kB行 320/4=80

Trs(pages)= 程序所拥有的可执行虚拟内存的大小 VmExe/4

status文件中的VmLib: 95976 kB行 有问题的

Lrs(pages)= 被映像到任务的虚拟内存空间的库的大小 VmLib/4

status文件中的下两行即2771312+88/4=692850

VmData: 2771312 kB

VmStk: 88 kB

Drs(pages)= 程序数据段和用户态的栈的大小 (VmData+VmStk)/4

dt(pages)

此文件字段较多

/proc/pid/stat参数解释pid=1 进程(包括轻量级进程,即线程)号comm= linuxrc 应用程序或命令的名字task_state=S 任务的状态,R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep (TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:deadppid=0 父进程IDpgid=0 线程组号sid=0 c该任务所在的会话组IDtty_nr=0(pts/3) 该任务的tty终端的设备号,INT(0/256)=主设备号,(0-主设备号)=次设备号tty_pgrp=-1 终端的进程组号,当前运行在该任务所在终端的前台任务(包括shell 应用程序)的PID。task->flags=8388864进程标志位,查看该任务的特性min_flt=50该任务不需要从硬盘拷数据而发生的缺页(次缺页)的次数cmin_flt=633 累计的该任务的所有的waited-for进程曾经发生的次缺页的次数目maj_flt=20该任务需要从硬盘拷数据而发生的缺页(主缺页)的次数cmaj_flt=4 累计的该任务的所有的waited-for进程曾经发生的主缺页的次数目utime=2 该任务在用户态运行的时间,单位为jiffiesstime=357 该任务在核心态运行的时间,单位为jiffiescutime=72 累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffiescstime=342 累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffiespriority=16 任务的动态优先级nice=0 任务的静态优先级num_threads=1 该任务所在的线程组里线程的个数it_real_value=0 由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位.start_time=22 该任务启动的时间,单位为jiffiesvsize=2252800(bytes) 该任务的虚拟地址空间大小rss=70(page) 该任务当前驻留物理地址空间的大小Number of pages the process has in real memory,minu 3 for administrative purpose.这些页可能用于代码,数据和栈。rlim=4294967295=0xFFFFFFFF(bytes) 该任务能驻留物理地址空间的最大值start_code=32768=0x8000  该任务在虚拟地址空间的代码段的起始地址(由连接器决定)end_code=1879936该任务在虚拟地址空间的代码段的结束地址start_stack=3199270704=0Xbeb0ff30该任务在虚拟地址空间的栈的开始地址kstkesp=3199269552  sp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.kstkeip=1113432 =0X10FD58 指向将要执行的指令的指针, PC(32 位指令指针)的当前值.pendingsig=0 待处理信号的位图,记录发送给进程的普通信号block_sig=0 阻塞信号的位图sigign=0 忽略的信号的位图sigcatch=674311被俘获的信号的位图wchan=3221479524  如果该进程是睡眠状态,该值给出调度的调用点nswap=0 被swapped的页数cnswap=0 所有子进程被swapped的页数的和exit_signal=0  该进程结束时,向父进程所发送的信号task_cpu(task)=0 运行在哪个CPU上task_rt_priority=0 实时进程的相对优先级别task_policy=0 进程的调度策略,0=非实时进程,1=FIFO实时进程;2=RR实时进程

/proc/pid/status

Name 应用程序或命令的名字

State 任务的状态,运行/睡眠/僵死/

SleepAVG 任务的平均等待时间(以nanosecond为单位),交互式任务因为休眠次数多、时间长,它们的 sleep_avg 也会相应地更大一些,所以计算出来的优先级也会相应高一些。

Tgid=286 线程组号

Pid=286 任务ID

Ppid=243 父进程ID

TracerPid=0 接收跟踪该进程信息的进程的ID号

Uid Uid euid suid fsuid

Gid Gid egid sgid fsgid

FDSize=32 文件描述符的最大个数,最多能打开的文件句柄的个数file->fds

Groups:

VmPeak: 60184 kB /*进程地址空间的大小*/

VmHWM: 18020 kB /*文件内存映射和匿名内存映射的大小*/

VmSize(KB)=1499136 任务虚拟地址空间的大小 (total_vm-reserved_vm),其中total_vm为进程的地址空间的大小,reserved_vm:进程在预留或特殊的内存间的物理页

VmLck(KB)=0 任务已经锁住的物理内存的大小。锁住的物理内存不能交换到硬盘 (locked_vm)

VmRSS(KB)= 344 kB 应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)

VmData(KB)=20KB 程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据; (total_vm-shared_vm-stack_vm)

VmStk(KB)=84KB 任务在用户态的栈的大小 (stack_vm)

VmExe(KB)=4KB 程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 (end_code-start_code)

VmLib(KB)=1300KB 被映像到任务的虚拟内存空间的库的大小 (exec_lib)

VmPTE=6KB 该进程的所有页表的大小,单位:kb

Threads=1 共享使用该信号描述符的任务的个数,在POSIX多线程序应用程序中,线程组中的所有线程使用同一个信号描述符。

SigQ 待处理信号的个数

SigPnd 屏蔽位,存储了该线程的待处理信号

ShdPnd 屏蔽位,存储了该线程组的待处理信号

SigBlk 存放被阻塞的信号

SigIgn 存放被忽略的信号

SigCgt 存放被俘获到的信号

CapInh Inheritable,能被当前进程执行的程序的继承的能力

CapPrm Permitted,进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的,CapEff是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性

CapEff Effective,进程的有效能力

Linux下进程信息的深入分析

这里我们主要介绍进程的状态,进程的状态可以通过/proc/PID/status来查看,也可以通过/proc/PID/stat来查看.

如果说到工具大家用的最多的ps也可以看到进程的信息.这里我们通过/proc/PID/status来分析进程的信息.

在2.6.18之后的内核,多了capibilty/cpusets等信息.

[root@localhost 1499]# ps -He

[root@localhost 1499]# cd /proc/1499/

[root@localhost 1499]# more status

State: S (sleeping)

解释:进程的状态我们前文已经做了很详细的分析,各进程的状态代表的意义如下:

R (running)", "S (sleeping)", "D (disk sleep)", "T (stopped)", "T(tracing stop)", "Z (zombie)", or "X (dead)"

Tgid: 1499

解释:Tgid是线程组的ID,一个线程一定属于一个线程组(进程组).

Pid: 987

解释:这个是进程的ID,更准确的说应该是线程的ID.

注:/proc/pid/status中的Pid就是ps命令的LWP列输出,PID一列其实是进程组,而LWP是轻量级进程,也就是线程,因为所有的进程必须一个线程,那就是它自己.

FDSize: 32

解释:

FDSize是当前分配的文件描述符,这个值不是当前进程使用文件描述符的上限.

我们看到这里是32,但实际并没有分配32个文件,如下:

我们看到这里只用到了18个文件描述符.而如果超过32个文件描述符,将以32进行递增,如果是64位系统,将以64进行递增.

FDSize这个值不会减少,如果我们程序打开了300个文件,并不会因为关闭文件,而减少FDSize这个值.

voluntary_ctxt_switches: 1

nonvoluntary_ctxt_switches: 0

voluntary_ctxt_switches表示进程主动切换的次数.

nonvoluntary_ctxt_switches表示进程被动切换的次数.

首先查看一下当前进程,如下:

echo $$

1544

执行如下命令:

while ((1)); do echo 1; sleep 1; done

查看该进程的主动切换与被动切换,如下:

cat status

voluntary_ctxt_switches: 949

nonvoluntary_ctxt_switches: 55

我们看到主动切换和被动切换有了明显的变化.

查看进程打开的文件

lsof -c bash  查看进程所打开的文件

bash    2036  ff1  255u   CHR  136,0      0t0      3 /dev/pts/0

bash    2059 root  cwd    DIR  253,0     4096 391887 /home/ff1/Desktop

bash    2083 root  cwd    DIR    0,3        0  12786 /proc/1481

bash    2083 root  rtd    DIR  253,0     4096      2 /

lsof -p 2083  查看pid所打开的文件

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME

bash    2083 root  cwd    DIR    0,3        0  12786 /proc/1481

bash    2083 root  rtd    DIR  253,0     4096      2 /

bash    2083 root  txt    REG  253,0   938832 130612 /bin/bash

bash    2083 root  mem    REG  253,0   156928 392183 /lib64/ld-2.12.so

[root@localhost bin]# ps -ef|grep ssh  查看进程pid

root      1481     1  0 05:07 ?        00:00:00 /usr/sbin/sshd

root      2079  1481  0 05:15 ?        00:00:00 sshd: root@pts/1

root      2155  2083  0 05:53 pts/1    00:00:00 grep ssh

[root@localhost bin]# lsof /usr/sbin/sshd  查看打开文件对应的进程

COMMAND  PID USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME

sshd    1481 root txt    REG  253,0   546680 675770 /usr/sbin/sshd

sshd    2079 root txt    REG  253,0   546680 675770 /usr/sbin/sshd

lsof -p 2079

sshd    2079 root    0u   CHR                1,3      0t0   3968 /dev/null

sshd    2079 root    1u   CHR                1,3      0t0   3968 /dev/null

sshd    2079 root    2u   CHR                1,3      0t0   3968 /dev/null

sshd    2079 root    3r  IPv4              19029      0t0    TCP 192.168.2.131:ssh->192.168.2.191:51500 (ESTABLISHED)

sshd    2079 root    4w  unix 0xffff88001f408680      0t0  19100 socket

sshd    2079 root    5u  FIFO                0,8      0t0  19103 pipe

sshd    2079 root    6w  FIFO                0,8      0t0  19103 pipe

sshd    2079 root    7u   CHR                5,2      0t0   5672 /dev/ptmx

sshd    2079 root    9u   CHR                5,2      0t0   5672 /dev/ptmx

sshd    2079 root   10u   CHR                5,2      0t0   5672 /dev/ptmx

[root@localhost fd]# cd /proc/2079/fd

[root@localhost fd]# ll

总用量 0

lrwx------. 1 root root 64 2月  27 05:15 0 -> /dev/null

lrwx------. 1 root root 64 2月  27 05:15 1 -> /dev/null

lrwx------. 1 root root 64 2月  27 05:50 10 -> /dev/ptmx

lrwx------. 1 root root 64 2月  27 05:15 2 -> /dev/null

lr-x------. 1 root root 64 2月  27 05:15 3 -> socket:[19029]

l-wx------. 1 root root 64 2月  27 05:15 4 -> socket:[19100]

lrwx------. 1 root root 64 2月  27 05:15 5 -> pipe:[19103]

l-wx------. 1 root root 64 2月  27 05:50 6 -> pipe:[19103]

lrwx------. 1 root root 64 2月  27 05:50 7 -> /dev/ptmx

lrwx------. 1 root root 64 2月  27 05:50 9 -> /dev/ptmx

[root@localhost bin]# lsof /bin/bash

COMMAND  PID USER  FD   TYPE DEVICE SIZE/OFF   NODE NAME

bash    2036  ff1 txt    REG  253,0   938832 130612 /bin/bash

bash    2059 root txt    REG  253,0   938832 130612 /bin/bash

bash    2083 root txt    REG  253,0   938832 130612 /bin/bash

进程与其线程信息采20次,每秒一次。

[root@221-comecs 11755]# pidstat -p 11755 -t 1 20 > /root/117

[root@221-comecs 11755]# pstree -U

init─┬─auditd───{auditd}

├─crond

├─master─┬─pickup

│ └─qmgr

├─6*[mingetty]

├─rpc.statd

├─rpcbind

├─rsyslogd───3*[{rsyslogd}]

├─safe_asterisk───asterisk───62*[{asterisk}]

├─snmpd

├─sshd───sshd───bash───pstree

├─udevd───2*[udevd]

└─vmtoolsd───{vmtoolsd}

[root@221-comecs 11755]# pstree -A

init-+-auditd---{auditd}

|-crond

|-master-+-pickup

| `-qmgr

|-6*[mingetty]

|-rpc.statd

|-rpcbind

|-rsyslogd---3*[{rsyslogd}]

|-safe_asterisk---asterisk---62*[{asterisk}]

|-snmpd

|-sshd---sshd---bash---pstree

|-udevd---2*[udevd]

`-vmtoolsd---{vmtoolsd}

[root@221-comecs 11755]# pstree -G

initqwqauditdqqq{auditd}

tqcrond

tqmasterqwqpickup

x mqqmgr

tq6*[mingetty]

tqrpc.statd

tqrpcbind

tqrsyslogdqqq3*[{rsyslogd}]

tqsafe_asteriskqqqasteriskqqq62*[{asterisk}]

tqsnmpd

tqsshdqqqsshdqqqbashqqqpstree

tqudevdqqq2*[udevd]

mqvmtoolsdqqq{vmtoolsd}

进程的层次关系,先内核态,再用户态,都是守护进程形式的

[root@221-comecs 11755]# ps -efH

UID PID PPID C STIME TTY TIME CMD

root 2 0 0 2014 ? 00:00:00 [kthreadd]

root 3 2 0 2014 ? 00:00:03 [migration/0]

root 4 2 0 2014 ? 00:03:46 [ksoftirqd/0]

root 5 2 0 2014 ? 00:00:00 [migration/0]

root 6 2 0 2014 ? 00:00:34 [watchdog/0]

root 7 2 0 2014 ? 00:00:08 [migration/1]

root 8 2 0 2014 ? 00:00:00 [migration/1]

root 9 2 0 2014 ? 00:04:53 [ksoftirqd/1]

root 10 2 0 2014 ? 00:00:34 [watchdog/1]

root 11 2 0 2014 ? 00:00:02 [migration/2]

root 12 2 0 2014 ? 00:00:00 [migration/2]

root 13 2 0 2014 ? 00:03:13 [ksoftirqd/2]

root 14 2 0 2014 ? 00:00:30 [watchdog/2]

root 15 2 0 2014 ? 00:00:18 [migration/3]

root 16 2 0 2014 ? 00:00:00 [migration/3]

root 17 2 0 2014 ? 00:03:10 [ksoftirqd/3]

root 18 2 0 2014 ? 00:00:30 [watchdog/3]

root 19 2 0 2014 ? 00:11:15 [events/0]

root 20 2 0 2014 ? 02:29:14 [events/1]

root 21 2 0 2014 ? 00:10:29 [events/2]

root 22 2 0 2014 ? 00:12:44 [events/3]

root 23 2 0 2014 ? 00:00:00 [cgroup]

root 24 2 0 2014 ? 00:00:00 [khelper]

root 25 2 0 2014 ? 00:00:00 [netns]

root 26 2 0 2014 ? 00:00:00 [async/mgr]

root 27 2 0 2014 ? 00:00:00 [pm]

root 28 2 0 2014 ? 00:01:15 [sync_supers]

root 29 2 0 2014 ? 00:01:24 [bdi-default]

root 30 2 0 2014 ? 00:00:00 [kintegrityd/0]

root 31 2 0 2014 ? 00:00:00 [kintegrityd/1]

root 32 2 0 2014 ? 00:00:00 [kintegrityd/2]

root 33 2 0 2014 ? 00:00:00 [kintegrityd/3]

root 34 2 0 2014 ? 00:00:53 [kblockd/0]

root 35 2 0 2014 ? 00:00:54 [kblockd/1]

root 36 2 0 2014 ? 00:00:57 [kblockd/2]

root 37 2 0 2014 ? 00:00:49 [kblockd/3]

root 38 2 0 2014 ? 00:00:00 [kacpid]

root 39 2 0 2014 ? 00:00:00 [kacpi_notify]

root 40 2 0 2014 ? 00:00:00 [kacpi_hotplug]

root 41 2 0 2014 ? 00:00:00 [ata_aux]

root 42 2 0 2014 ? 00:00:00 [ata_sff/0]

root 43 2 0 2014 ? 00:00:00 [ata_sff/1]

root 44 2 0 2014 ? 00:00:00 [ata_sff/2]

root 45 2 0 2014 ? 00:00:00 [ata_sff/3]

root 46 2 0 2014 ? 00:00:00 [ksuspend_usbd]

root 47 2 0 2014 ? 00:00:00 [khubd]

root 48 2 0 2014 ? 00:00:00 [kseriod]

root 49 2 0 2014 ? 00:00:00 [md/0]

root 50 2 0 2014 ? 00:00:00 [md/1]

root 51 2 0 2014 ? 00:00:00 [md/2]

root 52 2 0 2014 ? 00:00:00 [md/3]

root 53 2 0 2014 ? 00:00:00 [md_misc/0]

root 54 2 0 2014 ? 00:00:00 [md_misc/1]

root 55 2 0 2014 ? 00:00:00 [md_misc/2]

root 56 2 0 2014 ? 00:00:00 [md_misc/3]

root 57 2 0 2014 ? 00:00:00 [linkwatch]

root 58 2 0 2014 ? 00:00:10 [khungtaskd]

root 59 2 0 2014 ? 00:00:20 [kswapd0]

root 60 2 0 2014 ? 00:00:00 [ksmd]

root 61 2 0 2014 ? 00:00:58 [khugepaged]

root 62 2 0 2014 ? 00:00:00 [aio/0]

root 63 2 0 2014 ? 00:00:00 [aio/1]

root 64 2 0 2014 ? 00:00:00 [aio/2]

root 65 2 0 2014 ? 00:00:00 [aio/3]

root 66 2 0 2014 ? 00:00:00 [crypto/0]

root 67 2 0 2014 ? 00:00:00 [crypto/1]

root 68 2 0 2014 ? 00:00:00 [crypto/2]

root 69 2 0 2014 ? 00:00:00 [crypto/3]

root 74 2 0 2014 ? 00:00:00 [kthrotld/0]

root 75 2 0 2014 ? 00:00:00 [kthrotld/1]

root 76 2 0 2014 ? 00:00:00 [kthrotld/2]

root 77 2 0 2014 ? 00:00:00 [kthrotld/3]

root 78 2 0 2014 ? 00:00:00 [pciehpd]

root 80 2 0 2014 ? 00:00:00 [kpsmoused]

root 81 2 0 2014 ? 00:00:00 [usbhid_resumer]

root 112 2 0 2014 ? 00:00:00 [kstriped]

root 208 2 0 2014 ? 00:06:51 [mpt_poll_0]

root 209 2 0 2014 ? 00:00:00 [mpt/0]

root 210 2 0 2014 ? 00:00:00 [scsi_eh_0]

root 218 2 0 2014 ? 00:00:00 [scsi_eh_1]

root 219 2 0 2014 ? 00:00:00 [scsi_eh_2]

root 331 2 0 2014 ? 00:00:00 [kdmflush]

root 333 2 0 2014 ? 00:00:00 [kdmflush]

root 350 2 0 2014 ? 00:10:10 [jbd2/dm-0-8]

root 351 2 0 2014 ? 00:00:00 [ext4-dio-unwrit]

root 564 2 0 2014 ? 00:05:11 [vmmemctl]

root 760 2 0 2014 ? 00:00:00 [jbd2/sda1-8]

root 761 2 0 2014 ? 00:00:00 [ext4-dio-unwrit]

root 821 2 0 2014 ? 00:04:26 [kauditd]

root 1389 2 0 2014 ? 00:07:09 [flush-253:0]

root 1646 2 0 2014 ? 00:00:00 [rpciod/0]

root 1647 2 0 2014 ? 00:00:00 [rpciod/1]

root 1648 2 0 2014 ? 00:00:00 [rpciod/2]

root 1649 2 0 2014 ? 00:00:00 [rpciod/3]

root 1651 2 0 2014 ? 00:00:00 [kslowd000]

root 1652 2 0 2014 ? 00:00:00 [kslowd001]

root 1653 2 0 2014 ? 00:00:00 [nfsiod]

root 6154 2 0 2014 ? 00:00:00 [lockd]

root 10822 2 0 2014 ? 00:00:00 [bluetooth]

root 1 0 0 2014 ? 00:00:01 /sbin/init

root 429 1 0 2014 ? 00:00:00 /sbin/udevd -d

root 1535 429 0 2014 ? 00:00:00 /sbin/udevd -d

root 10821 429 0 2014 ? 00:00:00 /sbin/udevd -d

root 1191 1 0 2014 ? 02:49:57 /usr/sbin/vmtoolsd

root 1279 1 0 2014 ? 00:12:06 auditd

root 1295 1 0 2014 ? 00:03:09 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

rpc 1318 1 0 2014 ? 00:00:28 rpcbind

rpcuser 1336 1 0 2014 ? 00:00:00 rpc.statd

root 1390 1 0 2014 ? 00:03:46 /usr/sbin/sshd

root 14974 1390 0 10:17 ? 00:00:00 sshd: root@pts/1

root 14976 14974 0 10:17 pts/1 00:00:00 -bash

root 16504 14976 1 11:04 pts/1 00:00:00 ps -efH

root 1467 1 0 2014 ? 00:02:04 /usr/libexec/postfix/master

postfix 1475 1467 0 2014 ? 00:00:23 qmgr -l -t fifo -u

postfix 14264 1467 0 09:55 ? 00:00:00 pickup -l -t fifo -u

root 1522 1 0 2014 tty2 00:00:00 /sbin/mingetty /dev/tty2

root 1524 1 0 2014 tty3 00:00:00 /sbin/mingetty /dev/tty3

root 1526 1 0 2014 tty4 00:00:00 /sbin/mingetty /dev/tty4

root 1528 1 0 2014 tty5 00:00:00 /sbin/mingetty /dev/tty5

root 1530 1 0 2014 tty6 00:00:00 /sbin/mingetty /dev/tty6

root 2751 1 0 2014 tty1 00:00:00 /sbin/mingetty /dev/tty1

root 25396 1 0 2014 ? 00:01:30 crond

root 31986 1 0 2014 ? 00:34:51 /usr/sbin/snmpd -LS0-6d -Lf /dev/null -p /var/run/snmpd.pid

root 11752 1 0 Feb13 ? 00:00:00 /bin/sh /usr/sbin/safe_asterisk

root 11755 11752 2 Feb13 ? 16:59:27 /usr/sbin/asterisk -f -vvvg -c

[root@221-comecs 11755]#

[root@221-comecs 11755]# ps --help

********* simple selection ********* ********* selection by list *********

-A all processes -C by command name

-N negate selection -G by real group ID (supports names)

-a all w/ tty except session leaders -U by real user ID (supports names)

-d all except session leaders -g by session OR by effective group name

-e all processes -p by process ID

T all processes on this terminal -s processes in the sessions given

a all w/ tty, including other users -t by tty

g OBSOLETE -- DO NOT USE -u by effective user ID (supports names)

r only running processes U processes for specified users

x processes w/o controlling ttys t by tty

*********** output format ********** *********** long options ***********

-o,o user-defined -f full --Group --User --pid --cols --ppid

-j,j job control s signal --group --user --sid --rows --info

-O,O preloaded -o v virtual memory --cumulative --format --deselect

-l,l long u user-oriented --sort --tty --forest --version

-F extra full X registers --heading --no-heading --context

********* misc options *********

-V,V show version L list format codes f ASCII art forest

-m,m,-L,-T,H threads S children in sum -y change -l format

-M,Z security data c true command name -c scheduling class

-w,w wide output n numeric WCHAN,UID -H process hierarchy

[root@221-comecs 11755]# ps -p 11755

PID TTY TIME CMD

11755 ? 17:00:36 asterisk

[root@221-comecs 11755]# ps -fp 11755

UID PID PPID C STIME TTY TIME CMD

root 11755 11752 2 Feb13 ? 17:00:39 /usr/sbin/asterisk -f -vvvg -c

[root@221-comecs 11755]# ps -Fp 11755

UID PID PPID C SZ RSS PSR STIME TTY TIME CMD

root 11755 11752 2 545790 97840 2 Feb13 ? 17:00:31 /usr/sbin/asterisk -f -vvvg -c

[root@221-comecs 11755]# ps -efH

[root@221-comecs 11755]# ps -fp 1295 -m

UID PID PPID C STIME TTY TIME CMD

root 1295 1 0 2014 ? 00:03:09 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root - - 0 2014 - 00:00:00 -

root - - 0 2014 - 00:01:26 -

root - - 0 2014 - 00:01:42 -

root - - 0 2014 - 00:00:00 -

[root@221-comecs 11755]# ps -fp 1295 -L

UID PID PPID LWP C NLWP STIME TTY TIME CMD

root 1295 1 1295 0 4 2014 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 1295 1 1296 0 4 2014 ? 00:01:26 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 1295 1 1297 0 4 2014 ? 00:01:42 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 1295 1 1298 0 4 2014 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

[root@221-comecs 11755]# ps -fp 1295 -T

UID PID SPID PPID C STIME TTY TIME CMD

root 1295 1295 1 0 2014 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 1295 1296 1 0 2014 ? 00:01:26 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 1295 1297 1 0 2014 ? 00:01:42 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 1295 1298 1 0 2014 ? 00:00:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

[root@221-comecs 11755]# ps -fp 1295 H

UID PID PPID C STIME TTY STAT TIME CMD

root 1295 1 0 2014 ? Sl 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 1295 1 0 2014 ? Sl 1:26 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 1295 1 0 2014 ? Sl 1:42 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root 1295 1 0 2014 ? Sl 0:00 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

[root@221-comecs 11755]# ps -fp 1295 m

UID PID PPID C STIME TTY STAT TIME CMD

root 1295 1 0 2014 ? - 3:09 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root - - 0 2014 - Sl 0:00 -

root - - 0 2014 - Sl 1:26 -

root - - 0 2014 - Sl 1:42 -

root - - 0 2014 - Sl 0:00 -

[root@221-comecs 11755]# ps -fp 1295 -m

UID PID PPID C STIME TTY TIME CMD

root 1295 1 0 2014 ? 00:03:09 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

root - - 0 2014 - 00:00:00 -

root - - 0 2014 - 00:01:26 -

root - - 0 2014 - 00:01:42 -

root - - 0 2014 - 00:00:00 -

pid>fd>inode

11061>178>3252673

stat filename

ls -i filename

df -i

dumpe2fs

上面四个命令都可以查看相关的inode号

fd>pid>inode

[root@test1 fd]# asterisk -rx "com show online_trms"|grep 178

178 10004729 100080 014729415450 陕D01059:2 024:21:08 00:00:17 3 223.104.11.106 9925 70540 0 0 0

[root@test1 fd]# ss -np|grep 10000|grep 178

ESTAB 0 0 172.16.1.21:10000 223.104.11.106:9925 users:(("asterisk",11061,178))

[root@test1 fd]# cd /proc/11061/fd

[root@test1 fd]# ll|grep 178

lrwx------ 1 root root 64 Aug 18 15:58 178 -> socket:[3252673]

[root@test1 fd]# less /proc/net/tcp|grep 3252673

sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode

310: 150110AC:2710 6A0B68DF:26C5 01 00000000:00000000 02:0008C84D 00000000 0 0 3252673 2 ffff81010e346d00 2147 40 12 2 2

16进制转10进制的ip地址

150110AC:2710

150110AC=172.16.1.212710=10000

6A0B68DF:26C5

6A0B68DF=223.104.11.106 26C5=9925

那么这个socket:后面的一串数字是什么呢?其实是该socket的inode号。从linux内核代码net/socket.c 中可以看出,如下

/*

* sockfs_dname() is called from d_path().

*/

static char *sockfs_dname(struct dentry *dentry, char *buffer, int buflen)

{

return dynamic_dname(dentry, buffer, buflen, "socket:[%lu]",

dentry->d_inode->i_ino);

}

那么,知道了某个进程打开的socket的inode号后,我们可以做什么呢?这就涉及到/proc/net/tcp(udp对应/proc/net/udp)文件了,其中也列出了相应socket的inode号通过比对此字段,我们能在/proc/net/tcp下获得此套接口的其他信息,如对应的对,窗口大小,状态等信息。具体字段含义详见net/ipv4/tcp_ipv4.c 中的 tcp4_seq_show 函数。cat /proc/net/tcp 如下:

sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode

19: 0100007F:83B8 0100007F:A57D 01 00000000:00000000 00:00000000 00000000 0 0 10879 1 f622edc0 20 4 31 3 -1

20: 0100007F:0FA0 0100007F:AA06 01 00000000:00000000 00:00000000 00000000 0 0 7326842 1 f5504dc0 20 4 11 5 -1

深入分析Linux内核源码-第五章进程调度

http://www.chinaunix.net/old_jh/6/32963.html

http://hi.baidu.com/_kouu/item/7111e61acd04a9f487ad4ed0  linux进程状态浅析

http://hi.baidu.com/_kouu/item/38c81042455c97d2c1a592d9  linux进程调度浅析

来源:https://www.cnblogs.com/createyuan/p/3728340.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值