参考:/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

  1. [root@localhost proc]# more /proc/meminfo
  2. MemTotal: kB
  3. MemFree: kB
  4. MemAvailable: kB
  5. Buffers: kB
  6. Cached: kB
  7. SwapCached: kB
  8. Active: kB
  9. Inactive: kB
  10. Active(anon): kB
  11. Inactive(anon): kB
  12. Active(file): kB
  13. Inactive(file): kB
  14. Unevictable: kB
  15. Mlocked: kB
  16. SwapTotal: kB
  17. SwapFree: kB
  18. Dirty: kB
  19. Writeback: kB
  20. AnonPages: kB
  21. Mapped: kB
  22. Shmem: kB
  23. Slab: kB
  24. SReclaimable: kB
  25. SUnreclaim: kB
  26. KernelStack: kB
  27. PageTables: kB
  28. NFS_Unstable: kB
  29. Bounce: kB
  30. WritebackTmp: kB
  31. CommitLimit: kB
  32. Committed_AS: kB
  33. VmallocTotal: kB
  34. VmallocUsed: kB
  35. VmallocChunk: kB
  36. HardwareCorrupted: kB
  37. AnonHugePages: kB
  38. CmaTotal: kB
  39. CmaFree: kB
  40. HugePages_Total:
  41. HugePages_Free:
  42. HugePages_Rsvd:
  43. HugePages_Surp:
  44. Hugepagesize: kB
  45. DirectMap4k: kB
  46. DirectMap2M: kB
  47. DirectMap1G: kB

/ proc / meminfo包含有关系统内存的大量信息,包括总物理内存大小,当前可用物理内存大小(以kb为单位),见输出前两行。

使用man手册查看/proc/<fileneme>帮助信息

  1. 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

  1. [root@localhost proc]# ps ax | grep sshd
  2. ? Ss : /usr/sbin/sshd -D
  3. ? Ss : sshd: root@pts/
  4. pts/ S+ : grep --color=auto sshd

切换到/proc/1018目录,有如下内容

  1. [root@localhost ]# ls
  2. attr cmdline environ io mem ns pagemap sched stack task
  3. autogroup comm exe limits mountinfo numa_maps patch_state schedstat stat timers
  4. auxv coredump_filter fd loginuid mounts oom_adj personality sessionid statm uid_map
  5. cgroup cpuset fdinfo map_files mountstats oom_score projid_map setgroups status wchan
  6. clear_refs cwd gid_map maps net oom_score_adj root smaps syscall

随便点开一个文件看看,以status为例

  1. [root@localhost ]# cat status
  2. Name: sshd
  3. Umask:
  4. State: S (sleeping)
  5. Tgid:
  6. Ngid:
  7. Pid:
  8. PPid:
  9. TracerPid:
  10. Uid:
  11. Gid:
  12. FDSize:
  13. Groups:
  14. VmPeak: kB
  15. VmSize: kB
  16. VmLck: kB
  17. VmPin: kB
  18. VmHWM: kB
  19. VmRSS: kB
  20. RssAnon: kB
  21. RssFile: kB
  22. RssShmem: kB
  23. VmData: kB
  24. VmStk: kB
  25. VmExe: kB
  26. VmLib: kB
  27. VmPTE: kB
  28. VmSwap: kB
  29. Threads:
  30. SigQ: /
  31. SigPnd:
  32. ShdPnd:
  33. SigBlk:
  34. SigIgn:
  35. SigCgt:
  36. CapInh:
  37. CapPrm: 0000001fffffffff
  38. CapEff: 0000001fffffffff
  39. CapBnd: 0000001fffffffff
  40. CapAmb:
  41. Seccomp:
  42. Cpus_allowed: ffffffff,ffffffff,ffffffff,ffffffff
  43. Cpus_allowed_list: -
  44. Mems_allowed: ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
  45. Mems_allowed_list:
  46. voluntary_ctxt_switches:
  47. 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)的更多相关文章

  1. (转)Linux 文件系统:procfs, sysfs, debugfs 用法简介

    网址:http://www.tinylab.org/show-the-usage-of-procfs-sysfs-debugfs/ 1 前言 内核中有三个常用的伪文件系统:procfs,debugfs ...

  2. Linux proc目录下 几个系统文件下的各项参数 (cpuinfo,uptime,meminfo,stat,loadavg)

    参考链接: Linux 操作系统内核基本实验.pdf http://max.book118.com/html/2015/0919/25787869.shtm Linux下cpuinfo文件各项参数的详 ...

  3. [Linux] Proc 文件系统

    转载自:http://linux.chinaunix.net/doc/2004-10-05/16.shtml#324lfindex0 目录: /proc --- 一个虚拟文件系统 加载 proc 文件 ...

  4. [转帖]linux /proc目录下的文件为何无法用vi编辑保存

    linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...

  5. Linux /proc、/dev Principle

    目录 . /proc简介 . 内核机制相关 . 进程信息 . 硬件设备相关 . 系统信息 . /dev简介 . 内存相关 1. /proc简介 在linux的根目录下有一个/proc目录,/proc文 ...

  6. linux /proc/meminfo 文件分析(转载)

    cat /proc/meminfo    读出的内核信息进行解释,下篇文章会简单对读出该信息的代码进行简单的分析. # cat /proc/meminfo MemTotal:     kB MemFr ...

  7. 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运维的同学们,相信都遇到过这个问题. 在 ...

  8. Understanding Linux /proc/cpuinfo

    http://www.richweb.com/cpu_info A hyperthreaded processor has the same number of function units as a ...

  9. [转]linux /proc/cpuinfo 文件分析

    在Linux系统中,提供了proc文件系统显示系统的软硬件信息.如果想了解系统中CPU的提供商和相关配置信息,则可以通过/proc/cpuinfo文件得到.本文章针对该文件进行简单的总结. 基于不同指 ...

随机推荐

  1. 【sqlalchemy】

    https://www.cnblogs.com/ccorz/p/5711955.html

  2. 【Leetcode_easy】1128. Number of Equivalent Domino Pairs

    problem 1128. Number of Equivalent Domino Pairs solution1: 不明白为什么每个元素都要加上count: class Solution { pub ...

  3. 【JQuery Zepto插件】图片预加载

    屏幕滚动到图片当前位置加载图片,把图片的真实地址写到data-src属性里即可. <img src="占位图" data-src="img/foot.jpg&quo ...

  4. 深度技术W10系统中绑定MAC地址和IP地址的设置技巧

    深度技术W10系统中绑定MAC地址和IP地址的设置技巧分享给大家,感兴趣的用户,请一起来了解下,以备以后作参考,具体如下:1.点击“开始——搜索”,输入CMD命令,然后在CMD上右键选择以管理员身份运 ...

  5. Jira强制退出时(如意外停电)再启动报Locked错误的几个解决办法

    查看jira_home的路径在/opt/atlassian/jira/atlassian-jira/WEB-INF/classes/jira-application.properties文件中查看 方 ...

  6. React项目使用React-Router

    ⒈初始化React项目(略) 请参考 初始化一个React项目(TypeScript环境) ⒉集成React-Router 在React世界里,公认最好用的路由是React-Router.那我们直接来 ...

  7. python学习-52 XML模块

    XML模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但是json使用起来更简单. 例如:创建一个xml文件 <data> <country name=&q ...

  8. 【flume】5.采集日志进入hbase

    设置我们的flume配置信息 # Licensed to the Apache Software Foundation (ASF) under one # or more contributor li ...

  9. List集合转换为数组类型方法

    list集合转换为数组可以使用list集合的toArray(T[] a)方法, topicDetailsVo.setUrl(urls.toArray(new String[]{})); url是个数组 ...

  10. springboot调用mongo

    目录 添加 删除 文档操作更新 简单聚合操作 count, distinct 普通查询 分组 group Aggregate mapReduce 分页查询 文件上传 文件下载 随便测试了一下,有问题请 ...