`
shixiaomu
  • 浏览: 374912 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

全面了解Linux下Proc文件系统

阅读更多
全面了解Linux下Proc文件系统
 
Proc 是一个虚拟文件系统,在 Linux 系统中它被挂载于 /proc 目录之上。 Proc 有多个功能 ,这其中包括用户可以通过它访问内核信息或用于排错,这其中一个非常有 用的功能,也是 Linux 变得更加特别的功能就是以文本流的形式来访问进程信息。很 Linux 命令 ( 比如 ps toPpstree ) 都需要使用这个文件系统的信息。
本文就是向用户介绍一些访问这些信息的方法 。需要说明的是,本文所述的内容并不 一定适用所有内核版本,有部分操作只适用于 2.6 内核。
一、进程信息
/proc 文件系统中,每一个进程都有一个相应的文件 。下面是 /proc 目录下的一些重要文件
/proc/pid/cmdline 包含了用于开始进程的命令
/proc/pid/cwd 包含了当前进程工作目录的一个链接
/proc/pid/environ 包含了可用进程环境变量的列表
/proc/pid/exe 包含了正在进程中运行的程序链接;
/proc/pid/fd/ 这个目录包含了进程打开的每一个文件的链接;
/proc/pid/mem 包含了进程在内存中的内容;
/proc/pid/stat 包含了进程的状态信息;
/proc/pid/statm 包含了进程的内存使用信息。
下面是一些获取进程信息的例子:
假设现在要查看是否所有的进程都会做存储器清除工作。在 /proc/pid/stat 文件中的每一 个进程标识 ( 8 个属性 ) 提供了有关进程的很多 “个人”信 息。这个信 息可以对每一个 进程标识进行。
0x00000002 Process being created
0x00000004 Exiting
0x00000008 Dead
0x00000040 Process using
superuser privflage
0x00000200  P rocess dumping core
0x00000400 Prooess received some signal
0x00000800  Process allocating memory
0x00001000 Killed due to out-of--memory condition
笔者从 /usr/src/linux/include/linux/sched.h 中提取了这些信息。
/proc/pid/fd/ 目录提供 了有关打开文件的信息。要查看被进程使用的输入文件,使用以下命令
# ls –l /proc/pid/fd/0
  查看被进程使用 socket ,使用以下命令
#ls –l /proc/pid/fd|sed –n `/socket/{s/.*\[//;s/\]//p}`
有关这些 socket 的信息可以使用以下命令获取
# netstat --ae
要将命令行参数传递给任意进程,使用以下命令
~~cat /proc/pid/cmdline
获取某一进程父进程的 ID 号,使用以下命令:
#grep PPid/proc/pid/status
二、普通的系统信息
Proc 包含了很多系统信息,这其中包括 CPU 负载、文件系统和网络配置 。下面是一些通过 Proc 查看和更改系统的例子:
获取可用系统内存的空间
# grep  Free /proc/meminfo
自从系统最后一次启动后的系统统计可以从 /proc/stat 文件中获取
#grep processes /proc/stat
获知第 1 5 15 分钟系统负载的平均值
#awk `{print “1 min:\t” $1 “\n5 min:\t” $2 “\n15 min:\t” $3` /proc/loadavg
/proc/partitions 可用于获取系统的分区信息
/proc/net /proc/sys/net 可用于查看和更改重要的网络信息。比如,禁用 ping 命令,可以以 root 身份运行以下命令
#echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all
如果要启用 IP 转发 /IP 伪装,使用以下命令
#echo 1> /proc/sys/net/ipv4/ip_forward
已经挂载的文件系统信息可以从 /proc/mounts 中检索。
要改变正在使用的主机名 ,使用以下命令:
# echo www.abc.corn >/proc/sys/kernel/hostname
要获取 CPU 信息,使用以下命令
# cat /proc/cpuinfo
要获知 swap 空间的使用情况 ,使用以下命令:
# cat /proc/swaps
获取系统的正常运行时间:
#cat /proc/uptime
列出由 NFS 共享的文件系统:
# cat /proc/fs/nfsd/exports
三、相关内核的信息
这是一个非常宽泛的主题,这里只介绍其中一小部分内容:
从正在运行的内核中获知内核的版本:
#cat /proc/version
/proc/kmsg 文件被作为内核日志信息源,它可以被作为一个系统信息调用的接口使用。
/proc/kcore 文件提供了以内核文件格式形式访问系统物理内存,并且可以被 gdb 用于检查任意内核数据结构的当前状态。如果装了源码,那么可以通过查看 /usr/src/linux/Documentation/filesystems/proc.txt 文件来获取更多的信息
从中可以看出来, Proc 是一个非常不错的获取系统信息渠道。如果利用得好,则它对 Linux 系统的维护和管理能提供非常大的帮助。
分享到:
评论

相关推荐

    全面了解Linux下Proc文件系统.

    全面了解Linux下Proc文件系统

    LINUX.UNIX系统编程手册(下册)

    linux编程资深专家michael kerrisk在书中详细描述了linux/unix系统编程所涉及的系统调用和库函数,并辅之以全面而清晰的代码示例。《linux/unix系统编程手册(上、下册)》涵盖了逾500个系统调用及库函数,并给出逾200...

    Linux/UNIX系统编程手册.part2

    Linux编程资深专家Michael Kerrisk在书中详细描述了Linux/UNIX系统编程所涉及的系统调用和库函数,并辅之以全面而清晰的代码示例。《Linux/UNIX系统编程手册(上、下册)》涵盖了逾500个系统调用及库函数,并给出逾200...

    Linux/UNIX系统编程手册.part1

    Linux编程资深专家Michael Kerrisk在书中详细描述了Linux/UNIX系统编程所涉及的系统调用和库函数,并辅之以全面而清晰的代码示例。《Linux/UNIX系统编程手册(上、下册)》涵盖了逾500个系统调用及库函数,并给出逾200...

    LINUX网站建设技术指南

    4.5.6 /proc文件系统 82 4.6 启动和关机 83 4.6.1 启动和关机概述 83 4.6.2 近观启动过程 83 4.6.3 重新启动系统 85 4.6.4 紧急启动(软)盘 85 4.6.5 有关关机的更多信息 85 4.7 登录和注销 86 4.7.1 通过终端登录 86...

    linux命令大全

    很全面,很常见的命令。希望是你想要的! cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 ... cat /proc/mounts 显示已加载的文件系统

    linux-support:一组Rust板条箱,可简化与Linux互操作的过程

    是一个Rust板条箱,用于全面Linux支持,用于命名空间,cgroup,进程,调度,解析/proc和/sys的大量文件,信号,超线程,CPUS,NUMA节点,io-uring,io调度优先级,不寻常的文件描述符(包括pid描述符和userfaultfd)...

    linux-aslr:概述Linux ASLR的基本缺陷

    基本上,只要有一些合理的前提条件,您就可以将单个mmap的泄漏变成对ASLR的全面妥协。 而且,在某些公认的半罕见的上下文中,您应该能够盲目绕过linux ASLR。 前提条件是: 您可以访问相同的二进制文件。 理想...

Global site tag (gtag.js) - Google Analytics