Linux之PID状态信息是如何来的之详解PID stat文件

摘要

在Linux上一切皆文件,哪怕你是硬件也是用文件的形式给呈现出来了,刚开始接触Linux的时候我对这话也是很莫名其妙,很难以理解,但是经过这么长时间的接触,平均每天有20%+的时间在Linux系统中度过,我现在是慢慢理解了这句话(智商不行用的时间久了点。。。),既然硬件都用文件的形式呈现,PID这些信息当然也是一样的啦,今天就来遭喷PID的stat文件。

ls /proc/ | egrep '[0-9]+' | sort -n
#这条命令就是看当前系统上的进程ID,老鸟都知道的
#但是在这些纯数字的文件夹下还有其他的文件其中就有个stat文件,今天说的就是这货

先来粗略看看/proc这个文件夹

/proc/
├── 1				#PID
├── acpi			#貌似和电源管理相关
├── buddyinfo		#每个内存区中的每个order有多少块可用,和内存碎片问题有关
├── bus				#系统总线(Bus)信息,例如pci/usb等
├── cgroups			#当前所有控制组的状态
├── cmdline			#启动时传递给kernel的参数信息
├── cpuinfo			#cpu的信息
├── crypto			#内核使用的所有已安装的加密密码及细节
├── devices			#已经加载的设备并分类
├── diskstats		#取得磁盘信息
├── dma				#已注册使用的ISA DMA频道列表
├── driver			#驱动信息
├── execdomains		#Linux内核当前支持的execution domains
├── fb				#帧缓冲设备列表,包括数量和控制它的驱动
├── filesystems		#内核当前支持的文件系统类型
├── fs				#文件系统信息
├── interrupts		#x86架构中的每个IRQ中断数
├── iomem			#每个物理设备当前在系统内存中的映射
├── ioports			#一个设备的输入输出所使用的注册端口范围
├── irq				#中断请求设备信息
├── kallsyms		#内核符号信息,主要用于调试
├── kcore			#代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb
├── keys			#如果一个进程希望了解它可以查看哪些密钥,它可以通过读取 /proc/keys 获得这些信息。
#在配置内核时,必须启用这个文件,因为它允许任何用户列出密钥数据库。
├── key-users		#这个我也解释不清,看url吧:http://www.ibm.com/developerworks/cn/linux/l-key-retention.html
├── kmsg			#记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理
├── kpagecount		#这个文件包含一个64位值,该值表示每个page被映射的次数,通过PFN索引。
├── kpageflags		#这个文件包含每一个page的64位的标记集,通过PFN索引。
├── loadavg			#根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关
├── locks			#内核锁住的文件列表
├── mdstat			#多硬盘,RAID配置信息(md=multiple disks)
├── meminfo			#RAM使用的相关信息
├── misc			#其他的主要设备(设备号为10)上注册的驱动
├── modules			#所有加载到内核的模块列表
├── mounts -> self/mounts #系统中使用的所有挂载
├── mtd				#MTD系统分区信息,主要在嵌入式系统中
├── mtrr			#系统使用的Memory Type Range Registers (MTRRs)
├── net -> self/net	#网卡设备信息
│   ├── dev			#显示网络适配器及统计信息
├── pagetypeinfo	#貌似是内存管理相关,#http://scaiz.com/2014/08/27/linuxkernel2/
├── partitions		#分区中的块分配信息
├── sched_debug		#显示运行时调度程序可调优选项的当前值、CFS 统计信息和所有可用 CPU 的运行队列信息。
#当读取这个 proc 文件时,将调用 sched_debug_show() 函数并在 sched_debug.c 中定义。
├── schedstat		#为所有相关的 CPU 显示特定于运行队列的统计信息以及 SMP 系统中特定于域的统计信息。
#kernel/sched_stats.h 中定义的 show_schedstat() 函数将处理 proc 条目中的读操作。
├── scsi			#scsi设备信息
├── slabinfo		#系统中所有活动的 slab 缓存信息
├── softirqs		#内核软中断信息
├── stat			#所有的CPU活动信息
├── swaps			#交换空间的使用情况
├── sys				#在此目录下有许多子目录。此目录中的许多项都可以用来调整系统的性能。
├── sysrq-trigger	#使用echo命令来写这个文件的时候,远程root用户可以执行大多数的系统请求关键命令,
#就好像在本地终端执行一样。要写入这个文件,需要把/proc/sys/kernel/sysrq不能设置为0。这个文件对root也是不可读的
├── sysvipc			#进程间通信相关的,有三个文件,shm共享内存信息, sem信号量信息, msg消息队列信息
├── timer_list		#系统当前配置的所有时钟的详细情况,譬如当前系统活动的时钟源设备,时钟事件设备,tick device 等
├── timer_stats		#当前系统中所有正在使用的 timer 的统计信息
├── tty				#tty设备信息
├── uptime			#系统已经运行了多久
├── version			#Linux内核版本和gcc版本
├── vmallocinfo		#虚拟地址分配映射信息
├── vmcore			#内核panic时的内存映像
├── vmstat			#虚拟内存统计信息
└── zoneinfo		#显示内存空间的统计信息,对分析虚拟内存行为很有用

下面这个是一个PID文件夹下的所有文件树

[root@Legion22 ~]# tree /proc/3862/ 
/proc/3862/
├── attr
│   ├── current
│   ├── exec
│   ├── fscreate
│   ├── keycreate
│   ├── prev
│   └── sockcreate
├── autogroup
├── auxv
├── cgroup
├── clear_refs
├── cmdline
├── comm
├── coredump_filter
├── cpuset
├── cwd -> /usr/local/goproxy/bin
├── environ
├── exe -> /usr/local/goproxy/bin/goproxy
├── fd
│   ├── 0 -> /dev/pts/1
│   ├── 1 -> /dev/pts/1
│   ├── 2 -> /dev/pts/1
│   ├── 27 -> socket:[760522]
│   ├── 3 -> socket:[14716]
│   ├── 30 -> socket:[763231]
│   ├── 4 -> [eventpoll]
│   ├── 5 -> socket:[14718]
│   ├── 6 -> socket:[759640]
│   ├── 7 -> /dev/urandom
│   ├── 8 -> socket:[759634]
│   └── 9 -> socket:[800921]
├── fdinfo
│   ├── 0
│   ├── 1
│   ├── 2
│   ├── 27
│   ├── 3
│   ├── 30
│   ├── 4
│   ├── 5
│   ├── 6
│   ├── 7
│   ├── 8
│   └── 9
├── io
├── limits
├── loginuid
├── maps
├── mem
├── mountinfo
├── mounts
├── mountstats
├── net
│   ├── anycast6
│   ├── appex
│   │   ├── advAccEnable
│   │   ├── byteCacheEnable
│   │   ├── byteCacheIoFails
│   │   ├── cmd
│   │   ├── conservMode
│   │   ├── dataCompEnable
│   │   ├── hostFairEnable
│   │   ├── hostFairTcpAccSessNum
│   │   ├── hostFairTcpActSessNum
│   │   ├── hostFairUdpSessNum
│   │   ├── httpCompEnable
│   │   ├── ioctl
│   │   ├── logLevel
│   │   ├── maxTxEnable
│   │   ├── pcapEnable
│   │   ├── shaperEnable
│   │   ├── stats
│   │   ├── subnetAccEnable
│   │   ├── tcpAccEnable
│   │   ├── trackRandomLoss
│   │   ├── uapi
│   │   ├── version
│   │   ├── voipAccEnable
│   │   ├── voipSkipPackets
│   │   ├── wanBurstBytes
│   │   ├── wanIf
│   │   ├── wanInBurstBytes
│   │   ├── wanInKbps
│   │   ├── wanKbps
│   │   └── wanRateAutoDetect
│   ├── appex1
│   │   ├── advAccEnable
│   │   ├── byteCacheEnable
│   │   ├── byteCacheIoFails
│   │   ├── cmd
│   │   ├── conservMode
│   │   ├── dataCompEnable
│   │   ├── hostFairEnable
│   │   ├── hostFairTcpAccSessNum
│   │   ├── hostFairTcpActSessNum
│   │   ├── hostFairUdpSessNum
│   │   ├── httpCompEnable
│   │   ├── ioctl
│   │   ├── logLevel
│   │   ├── maxTxEnable
│   │   ├── pcapEnable
│   │   ├── shaperEnable
│   │   ├── stats
│   │   ├── subnetAccEnable
│   │   ├── tcpAccEnable
│   │   ├── trackRandomLoss
│   │   ├── version
│   │   ├── voipAccEnable
│   │   ├── voipSkipPackets
│   │   ├── wanBurstBytes
│   │   ├── wanIf
│   │   ├── wanInBurstBytes
│   │   ├── wanInKbps
│   │   ├── wanKbps
│   │   └── wanRateAutoDetect
│   ├── appex2
│   │   ├── advAccEnable
│   │   ├── byteCacheEnable
│   │   ├── byteCacheIoFails
│   │   ├── cmd
│   │   ├── conservMode
│   │   ├── dataCompEnable
│   │   ├── hostFairEnable
│   │   ├── hostFairTcpAccSessNum
│   │   ├── hostFairTcpActSessNum
│   │   ├── hostFairUdpSessNum
│   │   ├── httpCompEnable
│   │   ├── ioctl
│   │   ├── logLevel
│   │   ├── maxTxEnable
│   │   ├── pcapEnable
│   │   ├── shaperEnable
│   │   ├── stats
│   │   ├── subnetAccEnable
│   │   ├── tcpAccEnable
│   │   ├── trackRandomLoss
│   │   ├── version
│   │   ├── voipAccEnable
│   │   ├── voipSkipPackets
│   │   ├── wanBurstBytes
│   │   ├── wanIf
│   │   ├── wanInBurstBytes
│   │   ├── wanInKbps
│   │   ├── wanKbps
│   │   └── wanRateAutoDetect
│   ├── arp
│   ├── connector
│   ├── dev
│   ├── dev_mcast
│   ├── dev_snmp6
│   │   ├── eth0
│   │   └── lo
│   ├── icmp
│   ├── if_inet6
│   ├── igmp
│   ├── igmp6
│   ├── ip6_flowlabel
│   ├── ip6_mr_cache
│   ├── ip6_mr_vif
│   ├── ip_mr_cache
│   ├── ip_mr_vif
│   ├── ip_tables_matches
│   ├── ip_tables_names
│   ├── ip_tables_targets
│   ├── ipv6_route
│   ├── mcfilter
│   ├── mcfilter6
│   ├── netfilter
│   │   ├── nf_log
│   │   └── nf_queue
│   ├── netlink
│   ├── netstat
│   ├── nf_conntrack
│   ├── nf_conntrack_expect
│   ├── packet
│   ├── protocols
│   ├── psched
│   ├── ptype
│   ├── raw
│   ├── raw6
│   ├── route
│   ├── rt6_stats
│   ├── rt_acct
│   ├── rt_cache
│   ├── snmp
│   ├── snmp6
│   ├── sockstat
│   ├── sockstat6
│   ├── softnet_stat
│   ├── stat
│   │   ├── arp_cache
│   │   ├── ndisc_cache
│   │   ├── nf_conntrack
│   │   └── rt_cache
│   ├── tcp
│   ├── tcp6
│   ├── udp
│   ├── udp6
│   ├── udplite
│   ├── udplite6
│   ├── unix
│   ├── wireless
│   └── xfrm_stat
├── ns
│   ├── ipc -> ipc:[4026531839]
│   ├── mnt -> mnt:[4026531840]
│   ├── net -> net:[4026531954]
│   ├── pid -> pid:[4026531836]
│   └── uts -> uts:[4026531838]
├── numa_maps
├── oom_adj
├── oom_score
├── oom_score_adj
├── pagemap
├── personality
├── root -> /
├── sched
├── schedstat
├── sessionid
├── smaps
├── stack
├── stat
├── statm
├── status
├── syscall
├── task
│   ├── 17347
│   │   ├── attr
│   │   │   ├── current
│   │   │   ├── exec
│   │   │   ├── fscreate
│   │   │   ├── keycreate
│   │   │   ├── prev
│   │   │   └── sockcreate
│   │   ├── auxv
│   │   ├── cgroup
│   │   ├── clear_refs
│   │   ├── cmdline
│   │   ├── comm
│   │   ├── cpuset
│   │   ├── cwd -> /usr/local/goproxy/bin
│   │   ├── environ
│   │   ├── exe -> /usr/local/goproxy/bin/goproxy
│   │   ├── fd
│   │   │   ├── 0 -> /dev/pts/1
│   │   │   ├── 1 -> /dev/pts/1
│   │   │   ├── 2 -> /dev/pts/1
│   │   │   ├── 27 -> socket:[760522]
│   │   │   ├── 3 -> socket:[14716]
│   │   │   ├── 30 -> socket:[763231]
│   │   │   ├── 4 -> [eventpoll]
│   │   │   ├── 5 -> socket:[14718]
│   │   │   ├── 6 -> socket:[759640]
│   │   │   ├── 7 -> /dev/urandom
│   │   │   ├── 8 -> socket:[759634]
│   │   │   └── 9 -> socket:[800921]
│   │   ├── fdinfo
│   │   │   ├── 0
│   │   │   ├── 1
│   │   │   ├── 2
│   │   │   ├── 27
│   │   │   ├── 3
│   │   │   ├── 30
│   │   │   ├── 4
│   │   │   ├── 5
│   │   │   ├── 6
│   │   │   ├── 7
│   │   │   ├── 8
│   │   │   └── 9
│   │   ├── io
│   │   ├── limits
│   │   ├── loginuid
│   │   ├── maps
│   │   ├── mem
│   │   ├── mountinfo
│   │   ├── mounts
│   │   ├── ns
│   │   │   ├── ipc -> ipc:[4026531839]
│   │   │   ├── mnt -> mnt:[4026531840]
│   │   │   ├── net -> net:[4026531954]
│   │   │   ├── pid -> pid:[4026531836]
│   │   │   └── uts -> uts:[4026531838]
│   │   ├── numa_maps
│   │   ├── oom_adj
│   │   ├── oom_score
│   │   ├── oom_score_adj
│   │   ├── pagemap
│   │   ├── personality
│   │   ├── root -> /
│   │   ├── sched
│   │   ├── schedstat
│   │   ├── sessionid
│   │   ├── smaps
│   │   ├── stack
│   │   ├── stat
│   │   ├── statm
│   │   ├── status
│   │   ├── syscall
│   │   └── wchan
│   ├── 3862
│   │   ├── attr
│   │   │   ├── current
│   │   │   ├── exec
│   │   │   ├── fscreate
│   │   │   ├── keycreate
│   │   │   ├── prev
│   │   │   └── sockcreate
│   │   ├── auxv
│   │   ├── cgroup
│   │   ├── clear_refs
│   │   ├── cmdline
│   │   ├── comm
│   │   ├── cpuset
│   │   ├── cwd -> /usr/local/goproxy/bin
│   │   ├── environ
│   │   ├── exe -> /usr/local/goproxy/bin/goproxy
│   │   ├── fd
│   │   │   ├── 0 -> /dev/pts/1
│   │   │   ├── 1 -> /dev/pts/1
│   │   │   ├── 2 -> /dev/pts/1
│   │   │   ├── 27 -> socket:[760522]
│   │   │   ├── 3 -> socket:[14716]
│   │   │   ├── 30 -> socket:[763231]
│   │   │   ├── 4 -> [eventpoll]
│   │   │   ├── 5 -> socket:[14718]
│   │   │   ├── 6 -> socket:[759640]
│   │   │   ├── 7 -> /dev/urandom
│   │   │   ├── 8 -> socket:[759634]
│   │   │   └── 9 -> socket:[800921]
│   │   ├── fdinfo
│   │   │   ├── 0
│   │   │   ├── 1
│   │   │   ├── 2
│   │   │   ├── 27
│   │   │   ├── 3
│   │   │   ├── 30
│   │   │   ├── 4
│   │   │   ├── 5
│   │   │   ├── 6
│   │   │   ├── 7
│   │   │   ├── 8
│   │   │   └── 9
│   │   ├── io
│   │   ├── limits
│   │   ├── loginuid
│   │   ├── maps
│   │   ├── mem
│   │   ├── mountinfo
│   │   ├── mounts
│   │   ├── ns
│   │   │   ├── ipc -> ipc:[4026531839]
│   │   │   ├── mnt -> mnt:[4026531840]
│   │   │   ├── net -> net:[4026531954]
│   │   │   ├── pid -> pid:[4026531836]
│   │   │   └── uts -> uts:[4026531838]
│   │   ├── numa_maps
│   │   ├── oom_adj
│   │   ├── oom_score
│   │   ├── oom_score_adj
│   │   ├── pagemap
│   │   ├── personality
│   │   ├── root -> /
│   │   ├── sched
│   │   ├── schedstat
│   │   ├── sessionid
│   │   ├── smaps
│   │   ├── stack
│   │   ├── stat
│   │   ├── statm
│   │   ├── status
│   │   ├── syscall
│   │   └── wchan
│   ├── 3863
│   │   ├── attr
│   │   │   ├── current
│   │   │   ├── exec
│   │   │   ├── fscreate
│   │   │   ├── keycreate
│   │   │   ├── prev
│   │   │   └── sockcreate
│   │   ├── auxv
│   │   ├── cgroup
│   │   ├── clear_refs
│   │   ├── cmdline
│   │   ├── comm
│   │   ├── cpuset
│   │   ├── cwd -> /usr/local/goproxy/bin
│   │   ├── environ
│   │   ├── exe -> /usr/local/goproxy/bin/goproxy
│   │   ├── fd
│   │   │   ├── 0 -> /dev/pts/1
│   │   │   ├── 1 -> /dev/pts/1
│   │   │   ├── 2 -> /dev/pts/1
│   │   │   ├── 27 -> socket:[760522]
│   │   │   ├── 3 -> socket:[14716]
│   │   │   ├── 30 -> socket:[763231]
│   │   │   ├── 4 -> [eventpoll]
│   │   │   ├── 5 -> socket:[14718]
│   │   │   ├── 6 -> socket:[759640]
│   │   │   ├── 7 -> /dev/urandom
│   │   │   ├── 8 -> socket:[759634]
│   │   │   └── 9 -> socket:[800921]
│   │   ├── fdinfo
│   │   │   ├── 0
│   │   │   ├── 1
│   │   │   ├── 2
│   │   │   ├── 27
│   │   │   ├── 3
│   │   │   ├── 30
│   │   │   ├── 4
│   │   │   ├── 5
│   │   │   ├── 6
│   │   │   ├── 7
│   │   │   ├── 8
│   │   │   └── 9
│   │   ├── io
│   │   ├── limits
│   │   ├── loginuid
│   │   ├── maps
│   │   ├── mem
│   │   ├── mountinfo
│   │   ├── mounts
│   │   ├── ns
│   │   │   ├── ipc -> ipc:[4026531839]
│   │   │   ├── mnt -> mnt:[4026531840]
│   │   │   ├── net -> net:[4026531954]
│   │   │   ├── pid -> pid:[4026531836]
│   │   │   └── uts -> uts:[4026531838]
│   │   ├── numa_maps
│   │   ├── oom_adj
│   │   ├── oom_score
│   │   ├── oom_score_adj
│   │   ├── pagemap
│   │   ├── personality
│   │   ├── root -> /
│   │   ├── sched
│   │   ├── schedstat
│   │   ├── sessionid
│   │   ├── smaps
│   │   ├── stack
│   │   ├── stat
│   │   ├── statm
│   │   ├── status
│   │   ├── syscall
│   │   └── wchan
│   ├── 3864
│   │   ├── attr
│   │   │   ├── current
│   │   │   ├── exec
│   │   │   ├── fscreate
│   │   │   ├── keycreate
│   │   │   ├── prev
│   │   │   └── sockcreate
│   │   ├── auxv
│   │   ├── cgroup
│   │   ├── clear_refs
│   │   ├── cmdline
│   │   ├── comm
│   │   ├── cpuset
│   │   ├── cwd -> /usr/local/goproxy/bin
│   │   ├── environ
│   │   ├── exe -> /usr/local/goproxy/bin/goproxy
│   │   ├── fd
│   │   │   ├── 0 -> /dev/pts/1
│   │   │   ├── 1 -> /dev/pts/1
│   │   │   ├── 2 -> /dev/pts/1
│   │   │   ├── 27 -> socket:[760522]
│   │   │   ├── 3 -> socket:[14716]
│   │   │   ├── 30 -> socket:[763231]
│   │   │   ├── 4 -> [eventpoll]
│   │   │   ├── 5 -> socket:[14718]
│   │   │   ├── 6 -> socket:[759640]
│   │   │   ├── 7 -> /dev/urandom
│   │   │   ├── 8 -> socket:[759634]
│   │   │   └── 9 -> socket:[800921]
│   │   ├── fdinfo
│   │   │   ├── 0
│   │   │   ├── 1
│   │   │   ├── 2
│   │   │   ├── 27
│   │   │   ├── 3
│   │   │   ├── 30
│   │   │   ├── 4
│   │   │   ├── 5
│   │   │   ├── 6
│   │   │   ├── 7
│   │   │   ├── 8
│   │   │   └── 9
│   │   ├── io
│   │   ├── limits
│   │   ├── loginuid
│   │   ├── maps
│   │   ├── mem
│   │   ├── mountinfo
│   │   ├── mounts
│   │   ├── ns
│   │   │   ├── ipc -> ipc:[4026531839]
│   │   │   ├── mnt -> mnt:[4026531840]
│   │   │   ├── net -> net:[4026531954]
│   │   │   ├── pid -> pid:[4026531836]
│   │   │   └── uts -> uts:[4026531838]
│   │   ├── numa_maps
│   │   ├── oom_adj
│   │   ├── oom_score
│   │   ├── oom_score_adj
│   │   ├── pagemap
│   │   ├── personality
│   │   ├── root -> /
│   │   ├── sched
│   │   ├── schedstat
│   │   ├── sessionid
│   │   ├── smaps
│   │   ├── stack
│   │   ├── stat
│   │   ├── statm
│   │   ├── status
│   │   ├── syscall
│   │   └── wchan
│   ├── 3865
│   │   ├── attr
│   │   │   ├── current
│   │   │   ├── exec
│   │   │   ├── fscreate
│   │   │   ├── keycreate
│   │   │   ├── prev
│   │   │   └── sockcreate
│   │   ├── auxv
│   │   ├── cgroup
│   │   ├── clear_refs
│   │   ├── cmdline
│   │   ├── comm
│   │   ├── cpuset
│   │   ├── cwd -> /usr/local/goproxy/bin
│   │   ├── environ
│   │   ├── exe -> /usr/local/goproxy/bin/goproxy
│   │   ├── fd
│   │   │   ├── 0 -> /dev/pts/1
│   │   │   ├── 1 -> /dev/pts/1
│   │   │   ├── 2 -> /dev/pts/1
│   │   │   ├── 27 -> socket:[760522]
│   │   │   ├── 3 -> socket:[14716]
│   │   │   ├── 30 -> socket:[763231]
│   │   │   ├── 4 -> [eventpoll]
│   │   │   ├── 5 -> socket:[14718]
│   │   │   ├── 6 -> socket:[759640]
│   │   │   ├── 7 -> /dev/urandom
│   │   │   ├── 8 -> socket:[759634]
│   │   │   └── 9 -> socket:[800921]
│   │   ├── fdinfo
│   │   │   ├── 0
│   │   │   ├── 1
│   │   │   ├── 2
│   │   │   ├── 27
│   │   │   ├── 3
│   │   │   ├── 30
│   │   │   ├── 4
│   │   │   ├── 5
│   │   │   ├── 6
│   │   │   ├── 7
│   │   │   ├── 8
│   │   │   └── 9
│   │   ├── io
│   │   ├── limits
│   │   ├── loginuid
│   │   ├── maps
│   │   ├── mem
│   │   ├── mountinfo
│   │   ├── mounts
│   │   ├── ns
│   │   │   ├── ipc -> ipc:[4026531839]
│   │   │   ├── mnt -> mnt:[4026531840]
│   │   │   ├── net -> net:[4026531954]
│   │   │   ├── pid -> pid:[4026531836]
│   │   │   └── uts -> uts:[4026531838]
│   │   ├── numa_maps
│   │   ├── oom_adj
│   │   ├── oom_score
│   │   ├── oom_score_adj
│   │   ├── pagemap
│   │   ├── personality
│   │   ├── root -> /
│   │   ├── sched
│   │   ├── schedstat
│   │   ├── sessionid
│   │   ├── smaps
│   │   ├── stack
│   │   ├── stat
│   │   ├── statm
│   │   ├── status
│   │   ├── syscall
│   │   └── wchan
│   ├── 3866
│   │   ├── attr
│   │   │   ├── current
│   │   │   ├── exec
│   │   │   ├── fscreate
│   │   │   ├── keycreate
│   │   │   ├── prev
│   │   │   └── sockcreate
│   │   ├── auxv
│   │   ├── cgroup
│   │   ├── clear_refs
│   │   ├── cmdline
│   │   ├── comm
│   │   ├── cpuset
│   │   ├── cwd -> /usr/local/goproxy/bin
│   │   ├── environ
│   │   ├── exe -> /usr/local/goproxy/bin/goproxy
│   │   ├── fd
│   │   │   ├── 0 -> /dev/pts/1
│   │   │   ├── 1 -> /dev/pts/1
│   │   │   ├── 2 -> /dev/pts/1
│   │   │   ├── 27 -> socket:[760522]
│   │   │   ├── 3 -> socket:[14716]
│   │   │   ├── 30 -> socket:[763231]
│   │   │   ├── 4 -> [eventpoll]
│   │   │   ├── 5 -> socket:[14718]
│   │   │   ├── 6 -> socket:[759640]
│   │   │   ├── 7 -> /dev/urandom
│   │   │   ├── 8 -> socket:[759634]
│   │   │   └── 9 -> socket:[800921]
│   │   ├── fdinfo
│   │   │   ├── 0
│   │   │   ├── 1
│   │   │   ├── 2
│   │   │   ├── 27
│   │   │   ├── 3
│   │   │   ├── 30
│   │   │   ├── 4
│   │   │   ├── 5
│   │   │   ├── 6
│   │   │   ├── 7
│   │   │   ├── 8
│   │   │   └── 9
│   │   ├── io
│   │   ├── limits
│   │   ├── loginuid
│   │   ├── maps
│   │   ├── mem
│   │   ├── mountinfo
│   │   ├── mounts
│   │   ├── ns
│   │   │   ├── ipc -> ipc:[4026531839]
│   │   │   ├── mnt -> mnt:[4026531840]
│   │   │   ├── net -> net:[4026531954]
│   │   │   ├── pid -> pid:[4026531836]
│   │   │   └── uts -> uts:[4026531838]
│   │   ├── numa_maps
│   │   ├── oom_adj
│   │   ├── oom_score
│   │   ├── oom_score_adj
│   │   ├── pagemap
│   │   ├── personality
│   │   ├── root -> /
│   │   ├── sched
│   │   ├── schedstat
│   │   ├── sessionid
│   │   ├── smaps
│   │   ├── stack
│   │   ├── stat
│   │   ├── statm
│   │   ├── status
│   │   ├── syscall
│   │   └── wchan
│   ├── 3959
│   │   ├── attr
│   │   │   ├── current
│   │   │   ├── exec
│   │   │   ├── fscreate
│   │   │   ├── keycreate
│   │   │   ├── prev
│   │   │   └── sockcreate
│   │   ├── auxv
│   │   ├── cgroup
│   │   ├── clear_refs
│   │   ├── cmdline
│   │   ├── comm
│   │   ├── cpuset
│   │   ├── cwd -> /usr/local/goproxy/bin
│   │   ├── environ
│   │   ├── exe -> /usr/local/goproxy/bin/goproxy
│   │   ├── fd
│   │   │   ├── 0 -> /dev/pts/1
│   │   │   ├── 1 -> /dev/pts/1
│   │   │   ├── 2 -> /dev/pts/1
│   │   │   ├── 27 -> socket:[760522]
│   │   │   ├── 3 -> socket:[14716]
│   │   │   ├── 30 -> socket:[763231]
│   │   │   ├── 4 -> [eventpoll]
│   │   │   ├── 5 -> socket:[14718]
│   │   │   ├── 6 -> socket:[759640]
│   │   │   ├── 7 -> /dev/urandom
│   │   │   ├── 8 -> socket:[759634]
│   │   │   └── 9 -> socket:[800921]
│   │   ├── fdinfo
│   │   │   ├── 0
│   │   │   ├── 1
│   │   │   ├── 2
│   │   │   ├── 27
│   │   │   ├── 3
│   │   │   ├── 30
│   │   │   ├── 4
│   │   │   ├── 5
│   │   │   ├── 6
│   │   │   ├── 7
│   │   │   ├── 8
│   │   │   └── 9
│   │   ├── io
│   │   ├── limits
│   │   ├── loginuid
│   │   ├── maps
│   │   ├── mem
│   │   ├── mountinfo
│   │   ├── mounts
│   │   ├── ns
│   │   │   ├── ipc -> ipc:[4026531839]
│   │   │   ├── mnt -> mnt:[4026531840]
│   │   │   ├── net -> net:[4026531954]
│   │   │   ├── pid -> pid:[4026531836]
│   │   │   └── uts -> uts:[4026531838]
│   │   ├── numa_maps
│   │   ├── oom_adj
│   │   ├── oom_score
│   │   ├── oom_score_adj
│   │   ├── pagemap
│   │   ├── personality
│   │   ├── root -> /
│   │   ├── sched
│   │   ├── schedstat
│   │   ├── sessionid
│   │   ├── smaps
│   │   ├── stack
│   │   ├── stat
│   │   ├── statm
│   │   ├── status
│   │   ├── syscall
│   │   └── wchan
│   └── 4055
│       ├── attr
│       │   ├── current
│       │   ├── exec
│       │   ├── fscreate
│       │   ├── keycreate
│       │   ├── prev
│       │   └── sockcreate
│       ├── auxv
│       ├── cgroup
│       ├── clear_refs
│       ├── cmdline
│       ├── comm
│       ├── cpuset
│       ├── cwd -> /usr/local/goproxy/bin
│       ├── environ
│       ├── exe -> /usr/local/goproxy/bin/goproxy
│       ├── fd
│       │   ├── 0 -> /dev/pts/1
│       │   ├── 1 -> /dev/pts/1
│       │   ├── 2 -> /dev/pts/1
│       │   ├── 27 -> socket:[760522]
│       │   ├── 3 -> socket:[14716]
│       │   ├── 30 -> socket:[763231]
│       │   ├── 4 -> [eventpoll]
│       │   ├── 5 -> socket:[14718]
│       │   ├── 6 -> socket:[759640]
│       │   ├── 7 -> /dev/urandom
│       │   ├── 8 -> socket:[759634]
│       │   └── 9 -> socket:[800921]
│       ├── fdinfo
│       │   ├── 0
│       │   ├── 1
│       │   ├── 2
│       │   ├── 27
│       │   ├── 3
│       │   ├── 30
│       │   ├── 4
│       │   ├── 5
│       │   ├── 6
│       │   ├── 7
│       │   ├── 8
│       │   └── 9
│       ├── io
│       ├── limits
│       ├── loginuid
│       ├── maps
│       ├── mem
│       ├── mountinfo
│       ├── mounts
│       ├── ns
│       │   ├── ipc -> ipc:[4026531839]
│       │   ├── mnt -> mnt:[4026531840]
│       │   ├── net -> net:[4026531954]
│       │   ├── pid -> pid:[4026531836]
│       │   └── uts -> uts:[4026531838]
│       ├── numa_maps
│       ├── oom_adj
│       ├── oom_score
│       ├── oom_score_adj
│       ├── pagemap
│       ├── personality
│       ├── root -> /
│       ├── sched
│       ├── schedstat
│       ├── sessionid
│       ├── smaps
│       ├── stack
│       ├── stat
│       ├── statm
│       ├── status
│       ├── syscall
│       └── wchan
└── wchan

70 directories, 741 files

最后我们来看看PID文件下的stat文件

[root@Legion22 ~]# cat /proc/3862/stat
3862 (goproxy) S 3680 3862 3680 34817 3862 4202752 31001 0 186 0 7100 7036 0 0 20 0 8 0 32751 299028480 1928 18446744073709551615 4194368 7856416 140723322295984 140723322295496 4618051 0 0 0 2143420159 18446744073709551615 0 0 17 0 0 0 6 0 0
[root@Legion22 ~]# cat /proc/3862/stat | awk '{for (i=1;i<=NF;i++){print $i}}'
3862 #表示进程的PID
(goproxy) #表示进程的名称
S #表示进程的状态[R:runnign, S:sleeping (TASK_INTERRUPTIBLE), D:disk sleep (TASK_UNINTERRUPTIBLE), T: stopped, T:tracing stop,Z:zombie, X:dead]
3680 #表示进程的PPID,即父进程的PID
3862 #表示线程组号
3680 #表示该任务所在的会话组ID
34817 #表示该任务的tty终端的设备号,INT(34817/256)=主设备号,(34817-主设备号)=次设备号
3862 #表示终端的进程组号,当前运行在该任务所在终端的前台任务(包括shell 应用程序)的PID。
4202752 #表示进程标志位,查看该任务的特性
31001 #表示该任务不需要从硬盘拷数据而发生的缺页(次缺页)的次数
0 #表示累计的该任务的所有的waited-for进程曾经发生的次缺页的次数目
186 #表示该任务需要从硬盘拷数据而发生的缺页(主缺页)的次数
0 #表示累计的该任务的所有的waited-for进程曾经发生的主缺页的次数目
7100 #表示该任务在用户态运行的时间,单位为jiffies
7036 #表示该任务在核心态运行的时间,单位为jiffies
0 #表示累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffies
0 #表示累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies
20 #表示进程的优先级
0 #表示进程的nice值
8 #表示进程的线程数量
0 #(已被硬编码为0) The time in jiffies before the next SIGALRM is sent to the process due to an interval timer.
32751 #表示进程的启动时间,这个时间是用jiffies表示的从系统启动到进程启动的时间。The time in jiffies the process started after system boot.
299028480 #表示该任务的虚拟地址空间大小
1946 #表示该任务当前驻留物理地址空间的大小,Number of pages the process has in real memory,minu 3 for administrative purpose.这些页可能用于代码,数据和栈。
18446744073709551615 #表示该任务能驻留物理地址空间的最大值(bytes)
4194368 #表示该任务在虚拟地址空间的代码段的起始地址
7856416 #表示该任务在虚拟地址空间的代码段的结束地址
140723322295984 #表示该任务在虚拟地址空间的栈的结束地址
140723322295496 #表示esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.
4618051 #表示指向将要执行的指令的指针, EIP(32 位指令指针)的当前值.
0 #表示待处理信号的位图,记录发送给进程的普通信号
0 #表示阻塞信号的位图
0 #表示忽略的信号的位图
2143420159 #表示被俘获的信号的位图
18446744073709551615
0
0
17
0
0
0
6
0
0
[root@Legion22 ~]# cat /proc/3862/stat | awk '{for (i=1;i<=NF;i++){a++}}END{print a}'
44
[root@Legion22 ~]# 

从上面可以看出这个文件中以空格为分割有44个项目,现在就来说说他们都是什么含义

lookback
  • 本文由 发表于 2015年9月1日01:54:16
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: