Linux proc信息说明
- 格式:docx
- 大小:17.33 KB
- 文档页数:2
Linux查看进程的内存占用情况1、toptop命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Wi ndows的任务管理器内容解释:PID:进程的IDUSER:进程所有者PR:进程的优先级别,越小越优先被执行NInice:值VIRT:进程占用的虚拟内存RES:进程占用的物理内存SHR:进程使用的共享内存S:进程的状态。
S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数%CPU:进程占用CPU的使用率%MEM:进程使用的物理内存和总内存的百分比TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称常用的命令:P:按%CPU使用率排行T:按MITE+排行M:按%MEM排行2、/proc/pid测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息说明:/proc/N pid为N的进程信息/proc/N/cmdline 进程启动命令/proc/N/cwd 链接到进程当前工作目录/proc/N/environ 进程环境变量列表/proc/N/exe 链接到进程的执行命令文件/proc/N/fd 包含进程相关的所有的文件描述符/proc/N/maps 与进程相关的内存映射信息/proc/N/mem 指代进程持有的内存,不可读/proc/N/root 链接到进程的根目录/proc/N/stat 进程的状态/proc/N/statm 进程使用的内存的状态/proc/N/status 进程状态信息,比stat/statm更具可读性/proc/self 链接到当前正在运行的进程3、pmappmap命令可以显示一个或多个进程所使用的内存数量。
你可以使用这个工具来了解服务器上的某个进程分配了多少内存,并以此来判断这是否是导致内存瓶颈的原因。
要得到更加详细的信息,使用pmap-d选项。
Linux内存泄漏查询方法procstatus解释在测试,特别是性能测试或者系统的稳定性测试中,内存的使用情况是一个很重要的监控点,不管是从资源使用的角度还是从发现内存泄露问题的角度。
如果笼统的来看,大概就是两个指标,系统的内存使用率和进程使用的内存。
但是现实世界的事情往往没有那么简单,稍微细一点来看其实有很多的科目。
本文不是一个全面的关于内存使用的探讨,甚至也不是一个详细的Linux下面进程内存使用情况的分析,尽管这里的实践是基于此的。
这里想做的是稍微细节一点的来看Linux下一个进程的内存使用情况,包括栈和堆。
首先我们从一个简单的C程序开始。
且慢,先说一下我试验的环境。
platform: CentOS release 5.6 (Final) Linux localhost.localdomain 2.6.18-238.19.1.el5xen #1 SMP Fri Jul 15 08:57:45 EDT 2011 i686 i686 i386 GNU/Linuxgcc version 4.1.2 20080704 (Red Hat 4.1.2-50)[root@localhost test]# cat simple_hello.c#include <stdio.h>int main(){int i,m = 1024, n = 0, x;int a[m];printf("assign %d values to a[%d]...\n", n, m);for (i = 0; i < n; i++){a[i] = 100;}printf("valueassigned.\n");scanf("%d", &x); /* to hold program.. */return 0;}真是一个很简单的程序,只比hello world复杂一点点。
linuxprocinfo(processinformation)命令详解linux procinfo(process information) 命令详解
功能说明:显⽰系统状态。
语 法:procinfo [-abdDfhimsSv][-F <输出⽂件>][-n <间隔秒数>]
补充说明:procinfo指令从/proc⽬录⾥读取相关数据,将数据妥善整理过后输出到标准输出设备。
参 数:
-a 显⽰所有信息。
-b 显⽰磁盘设备的区块数⽬,⽽⾮存取数⽬。
-d 显⽰系统信息每秒间的变化差额,⽽⾮总和的数值。
本参数必须配合"-f"参数使⽤
-D 此参数效果和指定"-d"参数类似,但内存和交换⽂件的信息为总和数值。
-f 进⼊全画⾯的互动式操作界⾯。
-F<输出⽂件> 把信息状态输出到⽂件保存起来,⽽⾮预设的标准输出设备。
-h 在线帮助。
-i 显⽰完整的IRP列表。
-m 显⽰系统模块和外围设备等相关信息。
-n间隔秒数> 设置全画⾯互动模式的信息更新速度,单位以秒计算。
-s 显⽰系统的内存,磁盘空间,IRP和DMA等信息,此为预设值。
-S 搭配参数"-d"或"-D"使⽤时,每秒都会更新信息,不论是否有使⽤参数"-n"。
-v 显⽰版本信息。
Linux操作系统查看内存信息的命令Linux操作系统的内存使用情况我们可以通过命令来知道。
下面由店铺为大家整理了Linux操作系统查看内存信息的命令的详细介绍,希望对大家有帮助!Linux操作系统查看内存信息的命令1. /proc/meminfo查看RAM使用情况最简单的方法是通过/proc/meminfo。
这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示。
/proc/meminfo列出了所有你想了解的内存的使用情况。
进程的内存使用信息也可以通过/proc/<pid>/statm 和 /proc/<pid>/status 来查看。
$ cat /proc/meminfo2. atopatop命令是一个终端环境的监控命令。
它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注。
$ sudo atop3. freefree命令是一个快速查看内存使用情况的方法,它是对/proc/meminfo 收集到的信息的一个概述。
$ free -h4. GNOME System MonitorGNOME System Monitor 是一个显示最近一段时间内的CPU、内存、交换区及网络的使用情况的视图工具。
它还提供了一种查看CPU及内存使用情况的方法。
$ gnome-system-monitor5. htophtop命令显示了每个进程的内存实时使用率。
它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。
列表可以水平及垂直滚动。
$ htop6. KDE System Monitor功能同 4 中介绍的GENOME版本。
$ ksysguard7. memstatmemstat是一个有效识别executable(s), process(es)and shared libraries使用虚拟内存情况的命令。
Linux中/proc目录下文件详解(2008-7-20 15:54)Linux中/proc目录下文件详解(一)--------------------------------------------------------------------------------/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。
可以使用的文件随系统配置的变化而变化。
命令procinfo能够显示基于其中某些文件的多种系统信息。
以下详细描述/proc下的文件。
--------------------------------------------------------------------------------/proc/cmdline文件这个文件给出了内核启动的命令行。
它和用于进程的cmdline项非常相似。
示例:[root@localhost proc]# cat cmdlinero root=LABEL=/ rhgb quiet--------------------------------------------------------------------------------/proc/cpuinfo文件这个文件提供了有关系统CPU的多种信息。
这些信息是从内核里对CPU的测试代码中得到的。
文件列出了CPU的普通型号(386,486,586,686等),以及能得到的更多特定信息(制造商,型号和版本)。
文件还包含了以bogomips表示的处理器速度,而且如果检测到CPU的多种特性或者bug,文件还会包含相应的标志。
这个文件的格式为:文件由多行构成,每行包括一个域名称,一个冒号和一个值。
示例:[root@localhost proc]# cat cpuinfoprocessor : 0vendor_id : AuthenticAMDcpu family : 6model : 8model name : AMD Athlon(tm) XP 1800+stepping : 1cpu MHz : 1530.165cache size : 256 KBfdiv_bug : nohlt_bug : nof00f_bug : nocoma_bug : nofpu : yesfpu_exception : yescpuid level : 1wp : yesflags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnowbogomips : 2998.27--------------------------------------------------------------------------------/proc/devices文件这个文件列出字符和块设备的主设备号,以及分配到这些设备号的设备名称。
linux中proc详解Linux-procproc ⽂件系统在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc ⽂件系统。
最初设计的⽬的是允许更⽅便的对进程信息进⾏访问(因此得名),现在它被每⼀个有有趣的东西报告的内核使⽤,例如/proc/modules 有模块的列表/proc/meminfo 有内存使⽤的统计表。
使⽤proc ⽂件系统的⽅法和使⽤设备驱动程序⾮常相似--创建⼀个/proc ⽂件需要的所有信息的结构,包括任何处理函数的指针(在我们的例⼦中只有⼀个,当某⼈试图从/proc ⽂件读时调⽤的那⼀个)。
然后,init_module 在内核中登记该结构⽽cleanup_module 注销它。
我们使⽤proc_register_dynamic(这是在2.0 版中的情况,在2.2 版中如果我们将节点设置为0系统将⾃动为我们做到) 的原因是我们不想预先决定我们的⽂件的节点数字,⽽是为防⽌冲突⽽由内核决定它。
通常的⽂件系统存在于磁盘上⽽不是内存中(/proc 在内存中),在这中情况下,节点数是是指向⽂件的索引节点所在的磁盘位置的指针。
节点包含⽂件的信息(例如⽂件的存取权限)和指向磁盘位置或⽂件数据可以被找到的⼏个位置的指针。
因为当⽂件被打开或关闭的时候不能得到调⽤,所以在这个模块中没有地⽅放置MOD_INC_USE_COUNT 和MOD_DEC_USE_COUNT,并且,如果⽂件被打开随后模块被移除,我们没有办法避免后果。
在下⼀章我们会看到⼀个艰难的但更灵活的可以处理/proc⽂件的实现⽅式,它也可以让我们防⽌那个问题。
/os/201202/119552.htmlLinux 内核提供了⼀种通过/proc ⽂件系统,在运⾏时访问内核内部数据结构、改变内核设置的机制。
尽管在各种硬件平台上的Linux 系统的/proc ⽂件系统的基本概念都是相同的,但本⽂只讨论基于intel x86 架构的Linux /proc ⽂件系统。
Linux /proc信息说明
cd /proc/之后,你会发现很多的目录和文件,今天首先来介绍的就是那些以数字命名的目录--它们就是linux中的进程号,每当你创建一个进程时,里面就会动态更新多出一个名称为pid的目录,然后你ls -l /proc/pid会发现如下信息:
dr-xr-xr-x 2 user group 0 Sep 19 16:17 attr
-r-------- 1 user group 0 Sep 19 16:17 auxv
-r--r--r-- 1 user group 0 Sep 19 16:17 cgroup
--w------- 1 user group 0 Sep 19 16:17 clear_refs
-r--r--r-- 1 user group 0 Sep 18 14:18 cmdline
-rw-r--r-- 1 user group 0 Sep 19 16:17 coredump_filter
-r--r--r-- 1 user group 0 Sep 19 16:17 cpuset
lrwxrwxrwx 1 user group 0 Sep 19 16:17 cwd ->
/home/user/zbs/mysql/node-2
-r-------- 1 user group 0 Sep 19 16:17 environ
lrwxrwxrwx 1 user group 0 Sep 19 16:17 exe ->
/home/user/zbs/xtradb-5.1.47_group/libexec/mysqld
dr-x------ 2 user group 0 Sep 18 14:38 fd
dr-x------ 2 user group 0 Sep 19 16:17 fdinfo
-r-------- 1 user group 0 Sep 19 16:17 io
-r-------- 1 user group 0 Sep 19 16:17 limits
-rw-r--r-- 1 user group 0 Sep 19 16:17 loginuid
-r--r--r-- 1 user group 0 Sep 19 16:17 maps
-rw------- 1 user group 0 Sep 19 16:17 mem
-r--r--r-- 1 user group 0 Sep 19 16:17 mountinfo
-r--r--r-- 1 user group 0 Sep 19 16:17 mounts
-r-------- 1 user group 0 Sep 19 16:17 mountstats
dr-xr-xr-x 10 user group 0 Sep 19 16:17 net
-r--r--r-- 1 user group 0 Sep 19 16:17 numa_maps
-rw-r--r-- 1 user group 0 Sep 19 16:17 oom_adj
-r--r--r-- 1 user group 0 Sep 19 16:17 oom_score
-r--r--r-- 1 user group 0 Sep 19 16:17 pagemap
-r--r--r-- 1 user group 0 Sep 19 16:17 personality
lrwxrwxrwx 1 user group 0 Sep 19 16:17 root -> /
-rw-r--r-- 1 user group 0 Sep 19 16:17 sched
-r--r--r-- 1 user group 0 Sep 19 16:17 sessionid
-r--r--r-- 1 user group 0 Sep 19 16:17 smaps
-r--r--r-- 1 user group 0 Sep 19 16:17 stack
-r--r--r-- 1 user group 0 Sep 18 14:18 stat
-r--r--r-- 1 user group 0 Sep 18 14:18 statm
-r--r--r-- 1 user group 0 Sep 18 14:18 status
-r--r--r-- 1 user group 0 Sep 19 16:17 syscall
dr-xr-xr-x 20 user group 0 Sep 19 16:17 task
下面我们挑常用的来解释(用红色标注出)
cmdline:这个主要是当前这个进程被运行时的command line,里面包括了运行时指定的一些参数,比如如果是mysqld的话就包括basedir==,datadir==,port=,socket=等等信息,你可以自己尝试一下。
cwd:current working directory,当前的工作目录
environ:这是个比较有用的文件,里面记录了当前进程的一些环境变量,比如一台机器上对同一个系统起多个实例(当然是不同端口、不同数据目录),而你想知道哪个进程对应的是在哪个数据目录起来的(可能是因为你想kill-9其中一个实例,因为你怕弄错,所以的确定哪个进程是对应哪个数据目录),那么此时你该怎么办呢?两者方法:1.strings /proc/pid/environ | grep PWD 2.tr \0 \n < /proc/pid/envrion | grep PWD 即可。
当然里面还有很多的信息,你可以自己尝试。
exe:这个就是气这个进程的执行文件
fd:进程打开的文件描述符,我记得以前有人使用mysql遇到过two manyopenfiles的错误,这个就是打开太多的文件导致的,当然你如果只修改mysql里面的参数可能不会起作用,因为可能os上设置了一个比较小的数,所以要两者都调大。
fdinfo:跟上面一个一样,只不过只有文件描述符的值,没有表示这个文件描述符是对应打开的哪个文件。
在/proc很多时候都是这样维护的:可能两个文件里面要表示的信息是一样的,但是有一个一般是以人能容易读懂的格式给出。
limits:这个跟fd有一点关联,因为这个里面限制了进程对系统资源的使用额度,比如前面说的你可以打开多少文件,具体的设定你可以修改这个文件
/etc/securiry/limits.conf,里面也对每一项说得很清楚,只要会点E文,理解应该没问题
oom_adj/oom_score:这两个与linux的OOM机制有关的文件,oom_adj 相当于一个因子,它值越大,在OOM时更容易被系统kill掉,但最终决定是否被kill 的是oom_score,其实计算这个oom_score时,就是根据oom_adj来的,oom_adj 更大,计算出来的oom_score就更大,也能容易在OOM时被系统kill掉。
当然如果是很重要的服务现场,为了避免出现这种情况设置oom_adj=-17就行,表示永远不会因为OOM被kill。
stat/status:这两者要表示的信息都是一样的,进程的基本状态。