Linux proc信息说明
linux proc文件夹介绍

/proc/stat 所有的CPU活动信息
/proc/sysrq-trigger 使用echo命令来写这个文件的时候,远程root用户可以执行大多数的系统请求关键命令,就好像在本地终端执行一样。要写入这个文件,需要把/proc/sys/kernel/sysrq不能设置为0。这个文件对root也是不可读的
/proc/irq 中断请求设备信息
/proc/net 网卡设备信息
/proc/scsi scsi设备信息
/proc/tty tty设备信息
/proc/net/dev 显示网络适配器及统计信息
/proc/vmstat 虚拟内存统计信息
/proc/vmcore 内核panic时的内存映像
除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。
2. 子文件或子文件夹
/proc/buddyinfo 每个内存区中的每个order有多少块可用,和内存碎片问题有关
/proc/kcore 代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb
/proc/kmsg 记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理
/proc/loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关
Linux下/proc目录简介
1. /proc目录
Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
Linux 终端

�
If HUPCL is set, when the terminal driver detects that the last file descriptor referring to the terminal has been closed, it will set the modem control lines to “hang-up” the line.
� � � � � � � � � � � � � OPOST: Turn on output processing ONLCR: Convert any output newline to a carriage return/line feed pair OCRNL: Convert any output carriage return to a newline ONOCR: No carriage return output in column 0 ONLRET: A newline also does a carriage return(Don't output CR) OFILL: Send fill characters to provide delays OFDEL: Use DEL as a fill character, rather than NULL NLDLY: Newline delay selection CRDLY: Carriage return delay selection TABDLY: Tab delay selection BSDLY: Backspace delay selection VTDLY: Vertical tab delay selection FFDLY: Form feed delay selection
Linux中proc目录下文件详解

[root@localhost ~]# cat /proc/loadavg 0.11 0.16 0.14 3/126 3912
-------------------------------------------------------------------------------/proc/locks 文件 这个文件包含在打开的文件上的加锁信息。文件中的每一行描述了特定文件和文档上的加锁信息以及对文 件施加的锁的类型。内核也可以需要时对文件施加强制性锁。 示例: [root@localhost redhat]# cat /proc/locks 1: POSIX ADVISORY READ 3822 03:0a:1067117 0 EOF 2: POSIX ADVISORY READ 3822 03:0a:1067138 0 EOF 3: POSIX ADVISORY WRITE 3326 03:0a:2326540 0 EOF 4: POSIX ADVISORY WRITE 2639 03:0a:2966595 0 EOF 5: FLOCK ADVISORY WRITE 2591 03:0a:2966586 0 EOF 6: POSIX ADVISORY WRITE 2540 03:0a:2966578 0 EOF 7: POSIX ADVISORY WRITE 2530 03:0a:2966579 0 EOF 8: POSIX ADVISORY WRITE 2402 03:0a:2966563 0 EOF 9: POSIX ADVISORY WRITE 2371 03:0a:2966561 0 EOF --------------------------------------------------------------------------------
Linux查看进程的内存占用情况

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内存泄漏查询方法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)命令详解

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 显⽰版本信息。
proc 文件系统
该函数将创建一个目录,父目录为parent。
proc文件系统的编程接口
删除节点(文件或者目录)remove_proc_entry()
void remove_proc_entry ( const char *name, struct proc_dir_entry *parent)
该函数将删除一个proc节点(按文件名删除)。
proc文件系统的编程接口
以上五个创建节点的函数在内核中的实现流程:
通过proc_create为结构申请空间,并进行一些初始化工 作。 proc_register则进一步填写结构中的域。并完成注册工作
删除节点的函数在内核中的实现流程:
则是先调用clear_bit和proc_kill_inodes,注销inode结构 ,如果引用数为0,则调用free_proc_entry释放结构对应 的空间;否则置一个删除标志,不释放空间
proc文件系统的编程接口
创建设备文件proc_mknod()
struct proc_dir_entry *proc_mknod( const char *name, mode_t mode, struct proc_dir_entry *paren建一个名字为name的设 备文件,文件类型和权限为mode,设备号为rdev 。
操作系统 课程设计
proc 文件系统
proc
proc 文件系统是 Linux 中的特殊文件系统,提供 中的特殊文件系统, 给用户一个可以了解内核内部工作过程的可读窗 口,在运行时访问内核内部数据结构、改变内核 在运行时访问内核内部数据结构、 设置的机制。 设置的机制。
保存系统当前工作的特殊数据,但并不存在于任何物 理设备中; 对其进行读写时,才根据系统中的相关信息即时生成 ;或映射到系统中的变量或数据结构; proc 被称为‘伪文件系统’; 其挂接目录点固定为/proc; ‘man proc’ 进行了详细说明。
Linux操作系统查看内存信息的命令
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目录详解
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中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 ⽂件系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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:这两者要表示的信息都是一样的,进程的基本状态。