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目录的意义
回到顶部[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)
檔名
文件内容
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 的装置也记录在此喔! |
内容后,毕竟会比较有感觉啦!如果未来您想要自行撰写某些工具软件, 那么这个目录底下的相关
文件可能会对您有点帮助的喔!
initroot编辑整理,转载请注明www.initroot.com