简单案例教你用PROC文件系统获取进程信息

作者:佚名 上传时间:2019-05-13 版权申诉

本文将通过一个简单易懂的例子说明如何使用Linux下的PROC文件系统来获得进程的信息。通过PROC文件系统获取的信息主要是进程使用的虚拟内存、以及实际内存、信号机制方面的信息,和Linux下的其他监控工具搭配,能够对系统运行的情况有一个全面的掌握。首先提供一段PROC文件系统的简单介绍:

PROC文件系统是一个虚拟的文件系统,通过文件系统的接口实现,用于输出系统的运行状态。它以文件系统的形式,为操作系统本身和应用进程之间的通信提供了一个界面,使应用程序能够安全、方便地获得系统当前的运行状况和内核的内部数据信息,并可以修改某些系统的配置信息。另外,由于PROC以文件系统的接口实现,因此用户可以像访问普通文件一样对其进行访问,但它只存在于内存之中,并不存在于真正的物理磁盘当中。所以,当系统重启和电源关闭的时候,该系统中的数据和信息将全部消失。

表1说明了该文件系统中一些重要的文件和目录。

表1 重要的PROC文件系统文件和目录

文件或目录 说    明
/proc/1 关于进程1的信息目录。每个进程在/proc下有一个名为其进程号的目录
/proc/cpuinfo 处理器信息,如类型、制造商、型号和性能
/proc/devices 当前运行的核心配置的设备驱动的列表
/proc/dma 显示当前使用的DMA通道
/proc/filesystems 核心配置的文件系统
/proc/interrupts 显示使用的中断
/proc/ioports 当前使用的I/O端口
/proc/kcore 系统物理内存映像
/proc/kmsg 核心输出的消息,也被送到syslog
/proc/ksyms 核心符号表
/proc/loadavg 系统的平均负载
/proc/meminfo 存储器使用信息,包括物理内存和swap
/proc/modules 当前加载了哪些核心模块
/proc/net 网络协议状态信息
/proc/stat 系统的不同状态
/proc/version 核心版本
/proc/uptime 系统启动的时间长度

值得注意的是:所有上述文件给出易读的文本文件,有时可能是不易读的格式。有许多命令做了些格式化以更容易读。例如,free程序读/proc/meminfo并将给出的字节数转换为千字节(并增加了一些信息)。


下面将通过例子来说明如何使用PROC文件系统来获得进程的信息。

首先使用vi编辑器建立一个c源程序文件,编译后形成目标文件,该文件的主要功能是进行计算,将其保存在/root目录下,下面将其运行:

#cd /root                       //切换目录
#./calculate                    //运行该程序,则生成了以该程序为名称的进程

使用ps命令,则能发现在系统中运行了calculate这样一个进程:

#ps
root      2108 61.2 0.1 1344 224 pts/0    R    21:20   0:11 ./calculate
……

进程的基本信息都会存放在/proc文件系统中,具体位置是在/proc目录下。通过使用如下命令可以查看系统中运行进程的相关信息:

# ls /proc                      //查看/proc目录下的内容
//如下显示为系统中运行进程的信息所存放的目录,每个进程对应一个目录,加蓝的2108为本例使用的进程的详细信息所在目录
1     1790 1922 2049 2083 8            fs          meminfo     swaps
10    1799 1923 2056 2108 9            ide         misc        sys
11    1809 1924 2063 2111 apm          interrupts modules     sysvipc
1491 1818 1925 2065 2138 bus          iomem       mounts      tty
1550 1829 1968 2067 2162 cmdline      ioports     mtrr        uptime
1554 1893 1969 2069 2163 cpuinfo      irq         net         version
1572 19    1978 2071 3     devices      kcore       partitions
1591 1902 2     2073 4     dma          kmsg        pci
1670 1911 2032 2074 5     driver       ksyms       scsi
1720 1919 2043 2079 6     execdomains loadavg     self
1757 1920 2045 2081 7     fb           locks       slabinfo
1771 1921 2047 2082 77    filesystems mdstat      stat
#cd 2108                        //切换到2108目录,以方便详细的查看进程信息
#ls                             //列出进程详细的状态信息文件
cmdline cwd environ exe fd maps mem mounts root stat statm status

在这些文件当中,status这个状态文件是比较重要的,包含了很多关于进程的有用的信息,用户可以从这个文件获得信息,如下为列出该文件内容的操作:

#cat status                     //使用cat命令列出status文件内容
Name:   calculate               //进程名
State: R (running)             //进程运行状态
Tgid:   2108                    //进程组ID
Pid:    2108                     //进程ID
PPid:   2083                    //父进程ID
TracerPid:      0                //跟踪调试进程ID
Uid:    0       0       0       0   //进程所对应程序的UID
Gid:    0       0       0       0   //进程所对应程序的GID
FDSize: 256                     //进程使用文件句柄大小
Groups: 0 1 2 3 4 10 10         //组信息
//进程所使用的虚拟内存以及实际内存、信号机制方面的信息
VmSize:     1344 kB
VmLck:         0 kB
VmRSS:       224 kB
VmData:       12 kB
VmStk:        16 kB
VmExe:         4 kB
VmLib:      1292 kB
SigPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 8000000000000000
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff

这样,我们就可以知道进程使用的虚拟内存、以及实际内存、信号机制方面的信息了。
















本文转自samsunglinuxl51CTO博客,原文链接: http://blog.51cto.com/patterson/466729 ,如需转载请自行联系原作者



免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
PROC
本文将通过一个简单易懂的例子说明如何使用Linux下的PROC文件系统来获得进程的信息。通过PROC文件系统获取的信息主要是进程使用的虚拟内存、以及实际内存、信号机制方面的信息,和Linux
在AIX上使proc
这段示例代码演示了如何在AIX操作系统上使用proc文件系统获取进程的信息。通过读取proc文件系统中的特定文件,可以获取到进程的PID、工作目录、命令行等信息。# 获取进程pid列表ls /pr
适用于AIX 5.3及以上版本
AIX操作系统
2023-05-19 21:15
proc剖析文件系统
/proc 文件系统包含了丰富的信息 —— 用一点点脚本就可以用它来 剖析服务器。
PDF
0B
2019-01-05 05:39
proc文件系统
proc文件系统详细介绍
DOCX
0B
2019-06-01 06:48
使Python在AIX
本示例代码使用Python语言实现在AIX系统上获取进程信息的功能,主要使用Python的subprocess模块执行系统命令,然后解析命令的输出结果。通过示例代码可以获取进程的PID、进程名、进程所
Python 2.7.3
Python
2023-04-25 19:04
/proc/pid
 dr-xr-xr-x 2 tcpdump tcpdump 0 Mar 28 09:08 attr -r-------- 1 root    root    0 Mar
proc文件系统简介
本文简单介绍了proc文件系统的基本情况,适合初学者
DOCX
0B
2019-01-05 04:38
教你用solidewords
教你用solidewords
PDF
0B
2020-05-26 02:39
Dart和硬
获取环境变量 import 'dart:io' show Platform;main(List<String> arguments) { //获取当前进
教你用GUI做界面简单易懂
不会用matlab做界面的注意了,这个叫你怎么做界面
RAR
3.37MB
2020-09-27 04:37