Linux proc filesystem (procfs)
参考:/proc
/proc简介
本文着重关注/proc目录,查看其中文件并熟悉它。 /proc目录存在于所有Linux系统上,无论什么发行版或体系结构。首先,必须澄清一个误解:
就文件系统这一术语而言,/ proc目录并不是真正的文件系统,它是一个虚拟文件系统,有时也被称为进程信息伪文件系统。
procfs中包含有关进程和其他系统信息的信息。 它映射到/ proc目录并在OS启动时挂载(mount)。
切换到/proc目录,除了普通文件就是一些数字目录。数字目录代表进程,更为熟知的一种叫法是PID。
事实上,相当多Linux命令都是调用此目录中的文件来显示系统相关信息。
例如,'lsmod'与'cat /proc/modules相同,而'lspci'是'cat /proc/pci'相同。
通过更改位于此目录中的文件,您甚至可以在系统运行时读取/更改内核参数(sysctl)。
/proc目录下的文件还有个有趣的想像,就是大多数目录或文件大小都是0(除了kcore,mtrr和self)。对于大小为0的文件或目录,可以把它想象成一扇窗户。内核是一个黑盒子,为了方便我们观察里面到底发生了什么,开个窗户方便我们窥探里面的秘密。
/proc/<fileneme>
/proc/<fileneme>不代表某一具体文件,而是/proc目录下除数字目录外的文件。
/proc/meminfo
首先查看meminfo
[root@localhost proc]# more /proc/meminfo
MemTotal: kB
MemFree: kB
MemAvailable: kB
Buffers: kB
Cached: kB
SwapCached: kB
Active: kB
Inactive: kB
Active(anon): kB
Inactive(anon): kB
Active(file): kB
Inactive(file): kB
Unevictable: kB
Mlocked: kB
SwapTotal: kB
SwapFree: kB
Dirty: kB
Writeback: kB
AnonPages: kB
Mapped: kB
Shmem: kB
Slab: kB
SReclaimable: kB
SUnreclaim: kB
KernelStack: kB
PageTables: kB
NFS_Unstable: kB
Bounce: kB
WritebackTmp: kB
CommitLimit: kB
Committed_AS: kB
VmallocTotal: kB
VmallocUsed: kB
VmallocChunk: kB
HardwareCorrupted: kB
AnonHugePages: kB
CmaTotal: kB
CmaFree: kB
HugePages_Total:
HugePages_Free:
HugePages_Rsvd:
HugePages_Surp:
Hugepagesize: kB
DirectMap4k: kB
DirectMap2M: kB
DirectMap1G: kB
/ proc / meminfo包含有关系统内存的大量信息,包括总物理内存大小,当前可用物理内存大小(以kb为单位),见输出前两行。
使用man手册查看/proc/<fileneme>帮助信息
man /proc/<filename>
/proc/<fileneme>其他文件速览
- /proc/cmdline – Kernel command line information.
- /proc/console – Information about current consoles including tty.
- /proc/devices – Device drivers currently configured for the running kernel.
- /proc/dma – Info about current DMA channels.
- /proc/fb – Framebuffer devices.
- /proc/filesystems – Current filesystems supported by the kernel.
- /proc/iomem – Current system memory map for devices.
- /proc/ioports – Registered port regions for input output communication with device.
- /proc/loadavg – System load average.
- /proc/locks – Files currently locked by kernel.
- /proc/meminfo – Info about system memory (see above example).
- /proc/misc – Miscellaneous drivers registered for miscellaneous major device.
- /proc/modules – Currently loaded kernel modules.
- /proc/mounts – List of all mounts in use by system.
- /proc/partitions – Detailed info about partitions available to the system.
- /proc/pci – Information about every PCI device.
- /proc/stat – Record or various statistics kept from last reboot.
- /proc/swap – Information about swap space.
- /proc/uptime – Uptime information (in seconds).
- /proc/version – Kernel version, gcc version, and Linux distribution installed.
/proc/<numbers>
在/proc的数字目录中,可以找到一些文件和链接。这些目录的数字编号与其中运行的命令的PID相关。举个栗子,在我的系统上sshd进程的PID为1018
[root@localhost proc]# ps ax | grep sshd
? Ss : /usr/sbin/sshd -D
? Ss : sshd: root@pts/
pts/ S+ : grep --color=auto sshd
切换到/proc/1018目录,有如下内容
[root@localhost ]# ls
attr cmdline environ io mem ns pagemap sched stack task
autogroup comm exe limits mountinfo numa_maps patch_state schedstat stat timers
auxv coredump_filter fd loginuid mounts oom_adj personality sessionid statm uid_map
cgroup cpuset fdinfo map_files mountstats oom_score projid_map setgroups status wchan
clear_refs cwd gid_map maps net oom_score_adj root smaps syscall
随便点开一个文件看看,以status为例
[root@localhost ]# cat status
Name: sshd
Umask:
State: S (sleeping)
Tgid:
Ngid:
Pid:
PPid:
TracerPid:
Uid:
Gid:
FDSize:
Groups:
VmPeak: kB
VmSize: kB
VmLck: kB
VmPin: kB
VmHWM: kB
VmRSS: kB
RssAnon: kB
RssFile: kB
RssShmem: kB
VmData: kB
VmStk: kB
VmExe: kB
VmLib: kB
VmPTE: kB
VmSwap: kB
Threads:
SigQ: /
SigPnd:
ShdPnd:
SigBlk:
SigIgn:
SigCgt:
CapInh:
CapPrm: 0000001fffffffff
CapEff: 0000001fffffffff
CapBnd: 0000001fffffffff
CapAmb:
Seccomp:
Cpus_allowed: ffffffff,ffffffff,ffffffff,ffffffff
Cpus_allowed_list: -
Mems_allowed: ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Mems_allowed_list:
voluntary_ctxt_switches:
nonvoluntary_ctxt_switches:
文件里面内容是什么意思? 好吧,重要的部分是在顶部。 我们可以从状态文件中看到此进程属于sshd。 当前状态正在休眠,其进程ID显然是1018。 我们也可以看到谁在运行它,因为UID和GID为0,表明此进程属于root用户。
在任何数字目录中,抖有类似的文件结构。 最重要最常用的一些文件描述如下:
- cmdline – command line of the process
- environ – environmental variables
- fd – file descriptors
- limits – contains information about the limits of the process
- mounts – related information
除了普通文件外,还有一些链接文件
- cwd – a link to the current working directory of the process
- exe – link to the executable of the process
- root – link to the work directory of the process
Linux proc filesystem (procfs)的更多相关文章
- (转)Linux 文件系统:procfs, sysfs, debugfs 用法简介
网址:http://www.tinylab.org/show-the-usage-of-procfs-sysfs-debugfs/ 1 前言 内核中有三个常用的伪文件系统:procfs,debugfs ...
- Linux proc目录下 几个系统文件下的各项参数 (cpuinfo,uptime,meminfo,stat,loadavg)
参考链接: Linux 操作系统内核基本实验.pdf http://max.book118.com/html/2015/0919/25787869.shtm Linux下cpuinfo文件各项参数的详 ...
- [Linux] Proc 文件系统
转载自:http://linux.chinaunix.net/doc/2004-10-05/16.shtml#324lfindex0 目录: /proc --- 一个虚拟文件系统 加载 proc 文件 ...
- [转帖]linux /proc目录下的文件为何无法用vi编辑保存
linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...
- Linux /proc、/dev Principle
目录 . /proc简介 . 内核机制相关 . 进程信息 . 硬件设备相关 . 系统信息 . /dev简介 . 内存相关 1. /proc简介 在linux的根目录下有一个/proc目录,/proc文 ...
- linux /proc/meminfo 文件分析(转载)
cat /proc/meminfo 读出的内核信息进行解释,下篇文章会简单对读出该信息的代码进行简单的分析. # cat /proc/meminfo MemTotal: kB MemFr ...
- linux /proc/sys/fs/file-nr /proc/sys/fs/file-max /etc/security/limits.conf 三者的关联
ulimit -n 对应 /etc/security/limits.conf 文件设置 问题: Can’t open so many files 对于linux运维的同学们,相信都遇到过这个问题. 在 ...
- Understanding Linux /proc/cpuinfo
http://www.richweb.com/cpu_info A hyperthreaded processor has the same number of function units as a ...
- [转]linux /proc/cpuinfo 文件分析
在Linux系统中,提供了proc文件系统显示系统的软硬件信息.如果想了解系统中CPU的提供商和相关配置信息,则可以通过/proc/cpuinfo文件得到.本文章针对该文件进行简单的总结. 基于不同指 ...
随机推荐
- 基于Python中numpy数组的合并实例讲解
基于Python中numpy数组的合并实例讲解 下面小编就为大家分享一篇基于Python中numpy数组的合并实例讲解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 Python中n ...
- c#写windows服务 小demo
前段时间做一个数据迁移项目,刚开始用B/S架构做的项目,但B/S要寄存在IIs中,而IIs又不稳定因素,如果重启IIs就要打开页面才能运行项目.有不便之处,就改用Windows服务实现.这篇就总结下, ...
- CentOS8安装docker
参考:https://www.cnblogs.com/ding2016/p/11592999.html 一,安装环境查看 二,下载docker-ce的repo curl https://downloa ...
- 继400G后,QSFP-DD800G会是下一个风口吗?
数据中心市场作为光通信企业的主要战场,近三年400G的热度一直都在持续,虽有Facebook F16继续选用100G架构给市场泼了一些冷水等插曲存在,但近日随着阿里巴巴硅光400G QSFP-DD D ...
- MySQL新项目如何确保上线安全
大纲 DBA最应该做的事情 新项目开发环境应该注意什么 功能测试和压力测试MySQL DBA关注点 线上环境关注点 业务在大压力情况下,MySQL如何能活下来 DBA最应该做的事情 备份 建议每天全备 ...
- stm32f103的低功耗开启和关闭
stm32f103低功耗分为WFI等待中断和WFE等待事件,我只用到等待中断,这里没有细究. 待机模式最低功耗2uA,只有备份寄存器和待机电路供电,PLL,HSI,HSE断开,寄存器和SRAM复位,除 ...
- netty--使用注意事项
- X64驱动:内核操作进线程/模块
注意:下面的所有案例必须使用.C结尾的文件,且必须在链接选项中加入 /INTEGRITYCHECK 选项,否则编译根本无法通过(整合修正,Win10可编译,须在测试模式下进行),内核代码相对固定,如果 ...
- Angular 学习笔记 (Material table sticky 原理)
更新 : 2019-12-03 今天踩坑了, sticky 了解不够深 refer http://www.ruanyifeng.com/blog/2019/11/css-position.html 阮 ...
- 怎样在python中写多行语句
一般来说, 一行就是一条语句, 但有时语句过长不利于阅读, 一般会写成多行的形式, 这时需要在换行时使用反斜杠: \ name = "Lilei" age = 23 gender ...