linux /proc目录


1.什么是proc目录
proc是Linux系统下一个很重要的目录。 它跟/etc, /home等这些系统目录不同, 它不是一个真正的文件系统, 而是一个虚拟的文件系统。
它不存在于磁盘, 而是存在于系统内存中。 所以当你使用 ls -al /proc这条命令来查看proc目录时, 会看到其下面的所有文件的大小都为0字节。
proc以文件系统的方式为访问系统内核的操作提供接口。 很多系统的信息, 如内存使用情况, cpu使用情况,进程信息等等这些信息,都可以通过查看/proc下的对应文件来获得。
proc文件系统是动态从系统内核读出所需信息的。
2. 初识proc目录
proc目录下具体有哪些文件呢?
/proc 目录下的文件
/proc/cpuinifo CPU的信息(型号、家族、缓存大小等)
/proc/meminfo物理内存、交换空间
/proc/mounts 已加载的文件系统的列表
/proc/devices 可用设备的列表
/proc/filesystems 被支持的文件系统
/proc/modules 已加载的模块
/proc/virsion 内核版本
/proc/cmdline 系统启动时输入的内核命令行参数
/proc/XXX XXX是指以进程PID(数字编号)命名的目录,每一个目录表示一个进程(即线程组)。
/proc/swaps 要获知swap空间的使用情况
/proc/uptime 获取系统的正常运行时间
/proc/fs/nfsd/exports 列出由NFS共享的文件系统
/proc/kmsg 该文件被作为内核日志信息源,它可以被作为一个系统信息调用的接口使用
/proc/self -- 到当前进程/proc目录的符号链接,通过这个目录可以获取当前运行进程的信息。
/proc/pci -- 挂接在PCI总线上的设备
/proc/tty/driver/serial --串口配置、统计信息
/proc/version -- 系统版本信息
/proc/sys/kernel/ostype
/proc/sys/kernel/osrelease
/proc/sys/kernel/version
/proc/sys/kernel/hostname -- 主机名
/proc/sys/kernel/domainname -- 域名
/proc/partitions -- 硬盘设备分区信息
/proc/sys/dev/cdrom/info -- CDROM信息
/proc/locks -- 当前系统中所有的文件锁
/proc/loadavg -- 系统负荷信息
/proc/uptime -- 系统启动后的运行时间
3. 从proc窥看系统详情
很多系统命令在读取系统信息的时候,其实是从proc目录下读取对应的文件来获得的。 所以如果我们不使用这些命令, 直接到proc目录下去查看对应文件,也是可以获得对应的信息的。
下面举几个例子:
操作 系统命令 proc对应目录
获取系统版本信息 uname -a 或者 lsb_release /proc/version或者/proc/sys/kernel/hostname[,domainname, osrelease, ostype,version]
获取系统负载信息 top 或者 w 或者 uptime /proc/loadavg
获取内存使用情况 free /proc/meminfo
获取CPU使用情况 top /proc/cpuinfo
获取进程运行情况 ps aux 或者 top /proc/N[N为对应的PID号]
对于查看进程信息一栏,做下补充:
/proc/N pid为N的进程信息
/proc/N/cmdline 进程启动命令
/proc/N/cwd 链接到进程当前工作目录
/proc/N/environ 进程环境变量列表
/proc/N/exe 链接到进程的执行命令文件
/proc/N/fd 包含进程相关的所有的文件描述符
/proc/N/maps 与进程相关的内存映射信息
/proc/N/mem 指代进程持有的内存,不可读
/proc/N/root 链接到进程的根目录
/proc/N/stat 进程的状态
/proc/N/statm 进程使用的内存的状态
/proc/N/status 进程状态信息,比stat/statm更具可读性
/proc/self 链接到当前正在运行的进程
更多的应用场景, 留给大家自己到/proc目录下探索吧。
转载请注明来自:作者hackstoic
————————————————
版权声明:本文为CSDN博主「hackstoic」的编辑整理,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hackstoic/article/details/49966491

六./proc目录的意义

回到顶部
其实,我们之前提到的所谓的进程都是在内存当中嘛!而内存当中的数据又都是写入到 /proc/* 这个 目录下的,所以啰,我们当然可以直接观察 /proc 这个目录当中的文件啊! 如果你观察过 /proc 这 个目录的话,应该会发现他有点像这样:
[root@initroot ~]# ls -al /proc/
total 4
dr-xr-xr-x 196 root            root                          0 Jan 19 09:18 .
drwxr-xr-x  23 root            root                       4096 Jan  7 10:26 ..
dr-xr-xr-x   9 root            root                          0 Jan 19 09:18 1
dr-xr-xr-x   9 root            root                          0 Jan 19 15:01 10
dr-xr-xr-x   9 root            root                          0 Jan 19 15:01 1044
dr-xr-xr-x   9 root            root                          0 Jan 19 15:01 1055
dr-xr-xr-x   9 root            root                          0 Jan 19 15:01 11
dr-xr-xr-x   9 peter           peter                         0 Jan 19 09:20 1174
...(省略)...
dr-xr-xr-x   9 root            root                          0 Jan 19 15:01 920
dr-xr-xr-x   9 root            root                          0 Jan 19 15:01 937
dr-xr-xr-x   9 root            root                          0 Jan 19 15:01 949
dr-xr-xr-x   9 root            root                          0 Jan 19 15:01 964
dr-xr-xr-x   9 root            root                          0 Jan 19 15:01 966
dr-xr-xr-x   2 root            root                          0 Jan 19 09:18 acpi
dr-xr-xr-x   5 root            root                          0 Jan 19 09:18 asound
-r--r--r--   1 root            root                          0 Jan 19 15:14 buddyinfo
dr-xr-xr-x   4 root            root                          0 Jan 19 09:18 bus
-r--r--r--   1 root            root                          0 Jan 19 15:14 cgroups
-r--r--r--   1 root            root                          0 Jan 19 15:14 cmdline
-r--r--r--   1 root            root                          0 Jan 19 15:14 consoles
-r--r--r--   1 root            root                          0 Jan 19 15:14 cpuinfo
-r--r--r--   1 root            root                          0 Jan 19 15:14 crypto
-r--r--r--   1 root            root                          0 Jan 19 15:14 devices
-r--r--r--   1 root            root                          0 Jan 19 15:14 diskstats
-r--r--r--   1 root            root                          0 Jan 19 15:14 dma
dr-xr-xr-x   2 root            root                          0 Jan 19 15:14 driver
-r--r--r--   1 root            root                          0 Jan 19 15:14 execdomains
-r--r--r--   1 root            root                          0 Jan 19 15:14 fb
-r--r--r--   1 root            root                          0 Jan 19 15:01 filesystems
dr-xr-xr-x   5 root            root                          0 Jan 19 09:18 fs
-r--r--r--   1 root            root                          0 Jan 19 15:14 interrupts
-r--r--r--   1 root            root                          0 Jan 19 15:14 iomem
-r--r--r--   1 root            root                          0 Jan 19 15:14 ioports
dr-xr-xr-x  23 root            root                          0 Jan 19 09:18 irq
-r--r--r--   1 root            root                          0 Jan 19 15:14 kallsyms
-r--------   1 root            root            140737477885952 Jan 19 15:14 kcore
-r--r--r--   1 root            root                          0 Jan 19 15:14 keys
-r--r--r--   1 root            root                          0 Jan 19 15:14 key-users
-r--------   1 root            root                          0 Jan 19 09:18 kmsg
-r--------   1 root            root                          0 Jan 19 15:14 kpagecgroup
-r--------   1 root            root                          0 Jan 19 15:14 kpagecount
-r--------   1 root            root                          0 Jan 19 15:14 kpageflags
-r--r--r--   1 root            root                          0 Jan 19 15:14 loadavg
-r--r--r--   1 root            root                          0 Jan 19 15:01 locks
-r--r--r--   1 root            root                          0 Jan 19 15:14 mdstat
-r--r--r--   1 root            root                          0 Jan 19 14:58 meminfo
-r--r--r--   1 root            root                          0 Jan 19 15:14 misc
-r--r--r--   1 root            root                          0 Jan 19 15:14 modules
lrwxrwxrwx   1 root            root                         11 Jan 19 15:01 mounts -> self/mounts
-rw-r--r--   1 root            root                          0 Jan 19 09:18 mtrr
lrwxrwxrwx   1 root            root                          8 Jan 19 15:01 net -> self/net
-r--r--r--   1 root            root                          0 Jan 19 15:14 pagetypeinfo
-r--r--r--   1 root            root                          0 Jan 19 15:14 partitions
dr-xr-xr-x   2 root            root                          0 Jan 19 15:14 pressure
-r--r--r--   1 root            root                          0 Jan 19 15:14 sched_debug
-r--r--r--   1 root            root                          0 Jan 19 15:14 schedstat
dr-xr-xr-x   3 root            root                          0 Jan 19 15:14 scsi
lrwxrwxrwx   1 root            root                          0 Jan 19 09:18 self -> 8849
-r--------   1 root            root                          0 Jan 19 15:14 slabinfo
-r--r--r--   1 root            root                          0 Jan 19 15:14 softirqs
-r--r--r--   1 root            root                          0 Jan 19 15:14 stat
-r--r--r--   1 root            root                          0 Jan 19 09:18 swaps
dr-xr-xr-x   1 root            root                          0 Jan 19 09:18 sys
--w-------   1 root            root                          0 Jan 19 09:18 sysrq-trigger
dr-xr-xr-x   2 root            root                          0 Jan 19 15:14 sysvipc
lrwxrwxrwx   1 root            root                          0 Jan 19 09:18 thread-self -> 8849/task/8849
-r--------   1 root            root                          0 Jan 19 15:14 timer_list
dr-xr-xr-x   4 root            root                          0 Jan 19 15:14 tty
-r--r--r--   1 root            root                          0 Jan 19 15:14 uptime
-r--r--r--   1 root            root                          0 Jan 19 15:14 version
-r--r--r--   1 root            root                          0 Jan 19 15:14 version_signature
-r--------   1 root            root                          0 Jan 19 15:14 vmallocinfo
-r--r--r--   1 root            root                          0 Jan 19 14:58 vmstat
-r--r--r--   1 root            root                          0 Jan 19 15:14 zoneinfo
基本上,目前主机上面的各个进程的 PID 都是以目录的型态存在于 /proc 当中。 举例来说,我们开机所执行的第一支程序 systemd 他的 PID 是 1 , 这个 PID 的所有相关信息都写入在 /proc/1/*当中! 若我们直接观察 PID 为 1 的数据好了,他有点像这样:
[root@initroot ~]# ls -al /proc/1
total 0
dr-xr-xr-x   9 root root 0 Jan 19 09:18 .
dr-xr-xr-x 195 root root 0 Jan 19 09:18 ..
dr-xr-xr-x   2 root root 0 Jan 19 15:02 attr
-rw-r--r--   1 root root 0 Jan 19 15:16 autogroup
-r--------   1 root root 0 Jan 19 15:16 auxv
-r--r--r--   1 root root 0 Jan 19 15:02 cgroup
--w-------   1 root root 0 Jan 19 15:16 clear_refs
-r--r--r--   1 root root 0 Jan 19 15:02 cmdline
-rw-r--r--   1 root root 0 Jan 19 15:02 comm
-rw-r--r--   1 root root 0 Jan 19 15:16 coredump_filter
-r--r--r--   1 root root 0 Jan 19 15:16 cpuset
lrwxrwxrwx   1 root root 0 Jan 19 15:01 cwd -> /
-r--------   1 root root 0 Jan 19 15:16 environ
lrwxrwxrwx   1 root root 0 Jan 19 15:01 exe -> /lib/systemd/systemd
dr-x------   2 root root 0 Jan 19 15:01 fd
dr-x------   2 root root 0 Jan 19 15:01 fdinfo
-rw-r--r--   1 root root 0 Jan 19 15:16 gid_map
-r--------   1 root root 0 Jan 19 15:16 io
-r--r--r--   1 root root 0 Jan 19 15:16 limits
-rw-r--r--   1 root root 0 Jan 19 15:02 loginuid
dr-x------   2 root root 0 Jan 19 15:16 map_files
-r--r--r--   1 root root 0 Jan 19 15:01 maps
-rw-------   1 root root 0 Jan 19 15:16 mem
-r--r--r--   1 root root 0 Jan 19 09:18 mountinfo
-r--r--r--   1 root root 0 Jan 19 15:16 mounts
-r--------   1 root root 0 Jan 19 15:16 mountstats
dr-xr-xr-x   5 root root 0 Jan 19 15:16 net
dr-x--x--x   2 root root 0 Jan 19 15:16 ns
-r--r--r--   1 root root 0 Jan 19 15:16 numa_maps
-rw-r--r--   1 root root 0 Jan 19 15:16 oom_adj
-r--r--r--   1 root root 0 Jan 19 15:16 oom_score
-rw-r--r--   1 root root 0 Jan 19 15:16 oom_score_adj
-r--------   1 root root 0 Jan 19 15:16 pagemap
-r--------   1 root root 0 Jan 19 15:16 patch_state
-r--------   1 root root 0 Jan 19 15:16 personality
-rw-r--r--   1 root root 0 Jan 19 15:16 projid_map
lrwxrwxrwx   1 root root 0 Jan 19 15:01 root -> /
-rw-r--r--   1 root root 0 Jan 19 15:16 sched
-r--r--r--   1 root root 0 Jan 19 15:16 schedstat
-r--r--r--   1 root root 0 Jan 19 15:02 sessionid
-rw-r--r--   1 root root 0 Jan 19 15:16 setgroups
-r--r--r--   1 root root 0 Jan 19 15:16 smaps
-r--r--r--   1 root root 0 Jan 19 15:16 smaps_rollup
-r--------   1 root root 0 Jan 19 15:16 stack
-r--r--r--   1 root root 0 Jan 19 15:01 stat
-r--r--r--   1 root root 0 Jan 19 15:16 statm
-r--r--r--   1 root root 0 Jan 19 15:02 status
-r--------   1 root root 0 Jan 19 15:16 syscall
dr-xr-xr-x   3 root root 0 Jan 19 15:16 task
-r--r--r--   1 root root 0 Jan 19 15:16 timers
-rw-rw-rw-   1 root root 0 Jan 19 15:16 timerslack_ns
-rw-r--r--   1 root root 0 Jan 19 15:16 uid_map
-r--r--r--   1 root root 0 Jan 19 15:16 wchan
里面的数据还挺多的,不过,比较有趣的其实是两个文件,分别是:cmdline:这个进程被启动的指令串;environ:这个进程的环境变量内容。
很有趣吧!如果你查阅一下cmdline的话,就会发现:
[root@initroot ~]# cat /proc/1/cmdline 
/usr/lib/systemd/systemd--switched-root--system--deserialize22
就是这个指令、选项与参数启动 systemd进程 的啦!这还是跟某个特定的 PID 有关的内容呢,如果是针对整个 Linux 系统相关的参数呢? 那就是在 /proc 目录底下的文件啦!相关的文件与对应的内容是这样的: (注 3)
檔名
文件内容
/proc目录
linux文件类型
文件名 文件内容
/proc/cmdline 加载 kernel 时所下达的相关指令与参数!查阅此文件,可了解指令是如何启动的!
/proc/cpuinfo 本机的 CPU 的相关信息,包含频率、类型与运算功能等
/proc/devices 这个文件记录了系统各个主要装置的主要装置代号,与 mknod 有关呢!
/proc/filesystems 目前系统已经加载的文件系统啰!
/proc/interrupts 目前系统上面的 IRQ 分配状态。
/proc/ioports 目前系统上面各个装置所配置的 I/O 地址。
/proc/kcore 这个就是内存的大小啦!好大对吧!但是不要读他啦!
/proc/loadavg 还记得 top 以及 uptime 吧?没错!上头的三个平均数值就是记录在此!
/proc/meminfo 使用 free 列出的内存信息,嘿嘿!在这里也能够查阅到!
/proc/modules 目前我们的 Linux 已经加载的模块列表,也可以想成是驱动程序啦!
/proc/mounts 系统已经挂载的数据,就是用 mount 这个指令呼叫出来的数据啦!
/proc/swaps 到底系统挂加载的内存在哪里?呵呵!使用掉的 partition 就记录在此啦!
/proc/partitions 使用 fdisk -l 会出现目前所有的 partition 吧?在这个文件当中也有纪录喔!
/proc/uptime 就是用 uptime 的时候,会出现的信息啦!
/proc/version 核心的版本,就是用 uname -a 显示的内容啦!
/proc/bus/* 一些总线的装置,还有 USB 的装置也记录在此喔!
其实,上面这些文件在此建议您可以使用 cat 去查阅看看,不必深入了解, 不过,观看过文件
内容后,毕竟会比较有感觉啦!如果未来您想要自行撰写某些工具软件, 那么这个目录底下的相关
文件可能会对您有点帮助的喔!

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读