linux概念之进程分析

时间:2022-07-02 04:12:20

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:dead
ppid=0 父进程ID
pgid=0 线程组号
sid=0 c该任务所在的会话组ID
tty_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 该任务在用户态运行的时间,单位为jiffies
stime=357 该任务在核心态运行的时间,单位为jiffies
cutime=72 累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffies
cstime=342 累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies
priority=16 任务的动态优先级
nice=0 任务的静态优先级
num_threads=1 该任务所在的线程组里线程的个数
it_real_value=0 由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位.
start_time=22 该任务启动的时间,单位为jiffies
vsize=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.21 2710=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进程调度浅析