摘要
在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个项目,现在就来说说他们都是什么含义