在Linux中探索 /proc文件系统

今天,我们要看看在 /proc目录内和发展与它的了解。 /proc目录存在于所有的 Linux系统,无论风味还是架构。 我们必须立即清理的一个误解是,在 /proc目录是 不是一个真正 文件系统 ,在这个词的意义。 这是一个 虚拟文件系统 。 在 PROCFS中都包含有关进程和其他系统的信息。 它映射到 /proc和安装在 启动时间。

探索/proc文件系统

首先,让我们进入 /proc目录,并看看周围:
# cd /proc
你会注意到的第一件事是,有一些 熟悉的冠冕堂皇的文件 ,然后一大堆 编号的目录编号目录代表了 流程 ,更好地称为 PID和在其中,一个命令,占据他们。 该文件包含系统信息,如 上存储器 (meminfo中 ),CPU信息 (cpuinfo),以及可用的 文件系统另请阅读: Linux的Free命令检查物理内存和交换内存 让我们先看一个文件:
# cat /proc/meminfo
示例输出
它返回类似于这样的东西:
MemTotal:         604340 kB
MemFree:           54240 kB
Buffers:           18700 kB
Cached:           369020 kB
SwapCached:            0 kB
Active:           312556 kB
Inactive:         164856 kB
Active(anon):      89744 kB
Inactive(anon):      360 kB
Active(file):     222812 kB
Inactive(file):   164496 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:         89724 kB
Mapped:            18012 kB
Shmem:               412 kB
Slab:              50104 kB
SReclaimable:      40224 kB
...
正如你所看到的, 的/proc / meminfo中 ,包含了一些关于您的系统的内存,包括可用的(以 KB为单位)的总金额,并在上面两行免费量的信息。 运行 cat命令任何在 /proc将输出其内容的文件。有关任何文件的信息可以在手册页中通过运行:
# man 5 /proc/<filename>
我会给你 的/proc的文件简要介绍:
  1. /proc/cmdline -内核的命令行信息。
  2. /proc/console -关于当前游戏机,包括TTY信息。
  3. /proc/devices -当前配置为运行内核设备驱动程序。
  4. /proc/dma -信息关于当前的DMA通道。
  5. /proc/fb -帧缓冲设备。
  6. /proc/filesystems -内核支持当前的文件系统。
  7. /proc/iomem -当前的系统存储器映射设备。
  8. /proc/ioports -注册端口地区与设备的输入输出通信。
  9. /proc/loadavg -系统平均负载。
  10. /proc/locks -文件目前由内核锁定。
  11. /proc/meminfo -有关系统内存的信息(见上面的例子)。
  12. /proc/misc -杂项主设备注册其他驱动程序。
  13. /proc/modules -目前加载的内核模块。
  14. /proc/mounts -由系统使用的所有坐骑列表。
  15. /proc/partitions -关于提供给系统分区的详细信息。
  16. /proc/pci -大约每PCI设备的信息。
  17. /proc/stat -记录或各种数据不停地从去年重启。
  18. /proc/swap -关于交换空间的信息。
  19. /proc/uptime -运行时间信息(秒)。
  20. /proc/version -内核版本,gcc版本和Linux发行版安装。
在  /proc 中的编号的目录,你会发现一些 文件链接 。 请记住,这些目录“数字越大,命令的 PID被在其中运行。 让我们用一个例子。 在我的系统,有一个文件夹名称  /proc/12:
# cd /proc/12
# ls
示例输出
attr        coredump_filter  io         mounts      oom_score_adj  smaps    wchan
autogroup   cpuset           latency    mountstats  pagemap        stack
auxv        cwd              limits     net         personality    stat
cgroup      environ          loginuid   ns          root           statm
clear_refs  exe              maps       numa_maps   sched          status
cmdline     fd               mem        oom_adj     schedstat      syscall
comm        fdinfo           mountinfo  oom_score   sessionid      task
如果我运行:
# cat /proc/12/status
我得到以下:
Name:	xenwatch
State:	S (sleeping)
Tgid:	12
Pid:	12
PPid:	2
TracerPid:	0
Uid:	0	0	0	0
Gid:	0	0	0	0
FDSize:	64
Groups:
Threads:	1
SigQ:	1/4592
SigPnd:	0000000000000000
ShdPnd:	0000000000000000
SigBlk:	0000000000000000
SigIgn:	ffffffffffffffff
SigCgt:	0000000000000000
CapInh:	0000000000000000
CapPrm:	ffffffffffffffff
CapEff:	ffffffffffffffff
CapBnd:	ffffffffffffffff
Cpus_allowed:	1
Cpus_allowed_list:	0
Mems_allowed:	00000000,00000001
Mems_allowed_list:	0
voluntary_ctxt_switches:	84
nonvoluntary_ctxt_switches:	0
那么,这是什么意思?嗯,重要的是在顶部。我们可以从这个过程属于 xenwatch状态文件中看到。 其当前状态处于 睡眠状态 ,它的进程 ID12,很明显。 我们也可以看到谁在运行这一点,因为 UIDGID均为 0,表明这个过程属于 root用户。 在任何编号的目录中,您将具有类似的文件结构。最重要的,它们的描述如下:
  1. cmdline -进程的命令行
  2. environ -环境变量
  3. fd -文件描述符
  4. limits -包含有关进程的限制的信息
  5. 坐mounts -相关信息
您还将注意到编号目录中的许多链接:
  1. cwd -链接到进程的当前工作目录
  2. exe -链接到过程的可执行
  3. root -链接到进程的工作目录
这应该让你开始与 /proc目录熟悉自己。 还应该给一些命令是如何获得信息,如 uptime, lsof, mount,   ps ,仅举几例。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏