简介
proc文件系统是一个伪文件系统,用作内核数据结构的接口。它通常安装在/proc。其中大部分文件是只读的,但是有些文件允许更改内核变量。
目录
1. 常用文件
分类 | 伪文件 | 解释 |
系统信息 | /proc/sys/kernel/ostype | 显示操作系统类型 |
/proc/version | 显示内核版本 | |
/proc/sys/kernel/osrelease | 显示操作系统发行版本 | |
/proc/sys/kernel/hostname | 显示主机名,可手动设置: | |
echo 'localhost' > /proc/sys/kernel/hostname | ||
/proc/sys/kernel/domainname | 显示域名,可手动设置: | |
echo 'mydomain' > /proc/sys/kernel/domainname | ||
/proc/cpuinfo | 显示CPU信息 | |
/proc/net/arp | 显示网卡中地址等信息 | |
/proc/swaps | 显示交换使用的区域 | |
监控信息 | /proc/uptime | 显示系统时间,包含两个数字: |
1、系统的正常运行时间(秒) | ||
2、在空闲进程中花费的时间(秒) | ||
/proc/loadavg | 前3列为 1/5/15 分钟负载情况 | |
第4列斜杠前表示当前可运行的内核调度实体(进程、线程)的数量。斜杠后的值是系统中当前存在的内核调度实体的数量 | ||
第5列是系统上最近创建的进程的PID | ||
/proc/interrupts | 显示每个CPU和每个IO设备的中断数 | |
/proc/meminfo | 显示内存使用情况 | |
/proc/vmstat | 显示虚拟内存统计信息 | |
/proc/iomem | 显示I/O内存映射 | |
/proc/diskstats | 显示每个磁盘设备的磁盘I/O统计信息 | |
/proc/net/dev | 显示接收和发送数据包的数量、错误和冲突的数量以及其他基本统计信息 | |
/proc/locks | 显示当前的文件锁 | |
/proc/stat | 显示内核/系统统计数据 | |
/proc/slabinfo | 显示内核缓存的信息 | |
控制文件 | /proc/sys/kernel/dmesg_restrict | 该文件中的值决定谁可以查看内核syslog内容。 |
0没有任何限制。 | ||
1表示只有特权用户可以读取内核syslog日志。只有具有CAP_SYS_ADMIN能力的用户才能更改这个文件中的值。 | ||
/proc/sys/kernel/printk | 显示 4 列日志控制信息 | |
console_loglevel:控制台日志级别 | ||
default_message_loglevel:缺省消息日志级别 | ||
minimum_console_level:最低控制台 | ||
default_console_loglevel:默认控制台日志级别 | ||
/proc/sys/kernel/core_pattern | 显示core文件生成的路径/格式 | |
/proc/sys/kernel/core_uses_pid | 显示core文件后缀是否指定PID | |
0表示core文件格式 为:core | ||
1表示core文件格式为:core.[pid] | ||
/proc/sys/vm/drop_caches | 清理缓存(这是一个非破坏性操作,脏对象是不可释放的,所以需要先运行sync) | |
echo 1 > /proc/sys/vm/drop_caches #释放页面缓存 | ||
echo 2 > /proc/sys/vm/drop_caches #释放dentry、inode | ||
echo 3 > /proc/sys/vm/drop_caches #释放页面缓存、dentry、inode | ||
/proc/sys/vm/overcommit_memory | 内存分配机制 | |
0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够 的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 | ||
1:表示内核允许分配所有的物理内存,而不管当前的内存状态如何。 | ||
2:表示内核允许分配超过所有物理内存和交换空间总和的内存。 | ||
/proc/sys/vm/memory_failure_early_kill | 控制当硬件在后台检测到内核无法处理的未纠正的内存错误时如何杀死进程。 | |
0:只从所有进程解除损坏页面的映射,只杀死试图访问它的进程。 | ||
1:一旦检测到损坏,立即杀死所有映射了损坏且不可重新加载页面的进程。注意,这对于少数类型的页面(如内核内部分配数据或交换缓存)不支持,但适用于大多数用户页面。 | ||
/proc/sys/vm/memory_failure_recovery | 启用内存故障恢复(只在内核配置了CONFIG_MEMORY_FAILURE时出现) | |
0:内存故障时总是惊慌失措 | ||
1:尝试恢复 | ||
/proc/sys/vm/oom_dump_tasks | 允许在内核执行oom -kill时生成系统范围的任务转储(不包括内核线程)。 | |
转储包括每个任务(线程、进程)的以下信息:线程ID、真实用户ID、线程组ID(进程ID)、虚拟内存大小、驻留集大小、任务调度的CPU、oom_adj评分和命令名称。 | ||
/proc/sys/vm/oom_kill_allocating_task | 这将启用或禁用在内存不足的情况下杀死oom触发任务(默认 0) | |
如果这被设置为0,那么OOM-killer将扫描整个任务列表,并基于启发式选择一个任务进行杀死。这通常会选择一个非法占用内存的任务,该任务在被杀死时会释放大量内存。 | ||
如果将该值设置为非0,则oom -kill只会终止触发内存不足条件的任务。这避免了可能昂贵的任务列表扫描。 | ||
/proc/sys/vm/panic_on_oom | 这将在内存不足的情况下启用或禁用内核恐慌。 | |
如果将该文件设置为0,内核的OOM-killer将杀死某些恶意进程。通常,oom杀手能够杀死一个流氓进程,系统将存活下来 | ||
如果将该文件设置为值1,那么当发生内存不足时,内核通常会出现恐慌。然而,如果一个进程使用内存策略(mbind(2) MPOL_BIND)或cpu集(cpuset(7))将分配限制到某些节点,并且这些节点达到内存耗尽的状态,一个进程可能会被OOM-killer杀死。在这种情况下不会出现恐慌:因为其他节点的内存可能是空闲的,这意味着整个系统可能还没有达到内存不足的情况 | ||
/proc/sys/kernel/panic_on_oops | 当遇到oops或BUG时,这个文件控制内核的行为。 | |
包含0:则系统尝试继续操作。 | ||
包含1:那么系统将延迟几秒钟(给klogd时间来记录oops输出),然后出现恐慌。 | ||
如果/proc/sys/kernel/panic文件也非零,则机器将重新启动。 | ||
/proc/sys/kernel/pty/max | 此文件定义伪终端的最大数量 | |
/proc/sys/kernel/pty/nr | 这个只读文件指示当前正在使用的伪终端的数量 | |
/proc/sys/kernel/shmmni | 该文件指定系统范围内可以创建的System V共享内存段的最大数量 | |
/proc/sys/kernel/threads-max | 该文件指定了系统范围内可以在系统上创建的线程(任务)数量的限制 | |
/proc/sys/fs/file-nr | 文件包含3列数字: | |
1、已分配文件句柄的数量(即当前打开的文件数量) | ||
2、空闲文件句柄数 | ||
3、文件句柄的最大数量 | ||
/proc/sys/kernel/msgmni | 该文件定义了消息队列标识符数量的系统范围限制 | |
/proc/sys/kernel/msgmnb | 该文件定义了一个系统范围的参数,用于为随后创建的消息队列初始化 msg_qbytes 设置。msg_qbytes set‐ting 指定可以写入消息队列的最大字节数。 | |
进程可以使用它来设置每个进程可以打开的文件数量的限制RLIMIT_NOFILE。 | ||
如果内核日志中得到大量关于耗尽文件句柄的错误消息,可以尝试: | ||
echo 100000 > /proc/sys/fs/file-max | ||
/proc/sys/fs/inode-state | 该文件包含7个数字:nr_inodes、nr_free_inodes、preshrink 和4个虚拟值。 | |
nr_inodes:系统已分配的inode的数量。 | ||
nr_free_inodes:空闲inode的数量。 | ||
preshrink:当nr_inodes > inode-max,统需要修剪inode列表而不是分配更多。 | ||
/proc/sys/fs/protected_hardlinks | 当这个文件中的值为0时,对硬链接的创建没有任何限制 | |
当该值为1时,只有满足以下条件之一时,才能创建到目标文件的硬链接: | ||
1、目标文件为常规文件 | ||
2、目标文件没有启用set-user-ID权限位 | ||
3、目标文件没有同时启用set-group-ID和group-可执行权限位 | ||
4、调用者有读写目标文件的权限(通过文件的权限掩码或因为它有合适的功能) | ||
关系) | ||
/proc/sys/fs/protected_symlinks | 该文件中的默认值为0。将该值设置为1可以避免长期存在的一类基于访问符号链接时的检查时间和使用时间竞争的安全问题。 | |
0表示对下面的符号链接没有任何限制 | ||
1仅在以下情况下才会执行符号链接: | ||
1、链接后面进程的文件系统UID与符号链接的所有者(UID)相匹配(如凭证(7)所述,进程的文件系统UID通常与其有效UID相同) | ||
2、链接不在一个黏的世界可写目录中 | ||
3、符号链接和和它的父目录有相同的所有者(UID) | ||
/proc/sys/fs/suid_dumpable | 此文件中的值决定是否为set-user-ID或其他受保护/受污染的二进制文件生成核心转储文件。可以指定3个不同的整数值: | |
0(默认):如果进程更改了凭证(通过调用seteuid(2)、setgid(2)或类似的方法,或者通过执行set-user-ID或set-group-ID程序),或者其二进制文件没有启用读权限,则不会生成核心转储。 | ||
1(调试):所有进程都尽可能转储内核。核心转储由转储进程的文件系统用户ID拥有,不应用任何安全措施。这只适用于系统调试情况。Ptrace没有启用。 | ||
2(suidsafe):任何通常不会被转储的二进制文件(参见上面的“0”)都被转储为仅根用户可读。这允许用户删除核心转储文件,但不读取它。出于安全考虑,这种模式下的核心转储不会相互覆盖或覆盖其他文件。当管理员试图在正常环境中调试问题时,此模式非常合适。 | ||
/proc/sys/fs/super-max | 该文件控制超级块的最大数量,从而控制内核可以拥有的挂载文件系统的最大数量。如果需要挂载的文件系统多于super-max所允许的当前值,则只需要增加super-max。 |
1.1. 监控内存
cat /proc/meminfo(统计内存)
MemTotal :总内存大小(减去预留空间和内核)
MemFree :剩余物理内存
MemAvailable :可用内存 MemFree + cache/buffer/slab可回收部分(这个值不是很精准)
Buffers :块设备所占用的缓存页(直接读写块设备,以及文件系统元数据(metadata)。比如superblock使用的缓存页)
Cached :普通文件数据所占用的缓存页
SwapCached :交换分区使用的内存(如果内存压力很大,则不需要再次交换出这些页面,因为它们已经在交换文件中。这节省了I/o)
Active :最近使用的内存,除非绝对必要,通常不会回收
Inactive :最近较少使用的内存。它更有资格被回收用于其他目的。
Active(anon) :最近使用过的匿名内存
Inactive(anon):最近没有使用的匿名内存
Active(file) :最近使用过的文件内存
Inactive(file):最近没有使用的文件内存
Unevictable :不能够被释放的内存
Mlocked :被mlock()系统调用锁定的内存大小
SwapTotal :交换空间总数
SwapFree :当前未使用的交换空间数量
Dirty :等待写回磁盘的内存
Writeback :正在主动写回磁盘的内存
AnonPages :映射到用户空间页表的非文件备份页
Mapped :已映射的文件,例如库
Shmem :tmpfs文件系统使用的内存和共享缓存大小
Slab :内核内数据结构缓存
SReclaimable :Slab的一部分,可能会被回收,比如缓存
SUnreclaim :Slab的一部分,在内存压力下无法回收
KernelStack :分配给内核堆栈的内存量
PageTables :专用于最低级别页表的内存量
NFS_Unstable :向服务器发送NFS页面,但尚未提交到稳定存储
Bounce :用于块设备“反射缓冲器”的内存
WritebackTmp :FUSE用于临时回写缓冲区的内存
CommitLimit :当前系统上可分配的内存总量 CommitLimit = (overcommit_ratio * Physical RAM) + Swap)
Committed_AS :系统上当前分配的内存量
VmallocTotal :vmalloc内存区域的总大小
VmallocUsed :所使用的vmalloc区域的数量
VmallocChunk :空闲的vmalloc区域的最大连续块
HardwareCorrupted:系统检测到内存上存在的硬件故障,会把有故障的页删除掉不再使用,HardwareCorrupted上就记录了删除掉的内存页大小
AnonHugePages :透明大页使用量
HugePages_Total :分配的大页内存大小
HugePages_Free :空闲的大页内存大小
Hugepagesize :大页大小
cat/proc/vmstat(统计虚拟内存)
nr_free_pages :空闲页数量
nr_inactive_anon :所有node统计的非活跃的匿名页数之和
nr_active_anon :所有node统计的活跃的匿名页数之和
nr_inactive_file :所有node统计的非活跃的文件页数之和
nr_active_file :所有node统计的活跃的文件页数之和
nr_unevictable :所有node统计的不可释放的页数之和
nr_mlock :mlock的页数
nr_anon_pages :匿名页的页数
nr_mapped :映射到文件的页数
nr_file_pages :表示所有缓存页的总和包含了cache 和buffers. total_swapcache_pages
nr_dirty :脏页数
nr_writeback :回写页数
nr_slab_reclaimable:已经分配出去的reclaimable slab object的内存大小
nr_slab_unreclaimable:已经分配出去的unreclaimable slab object的内存大小
nr_page_table_pages:分配到页表的页数
nr_kernel_stack :分配给内核堆栈的内存量
nr_unstable :不稳定页数
nr_bounce :dma缓冲取页数量
nr_vmscan_write :扫描LRU时脏页的回写
nr_vmscan_immediate_reclaim:见函数shrink_page_list(),此处是把页置上reclaim标志然后就退出
nr_writeback_temp:使用临时缓冲区回写
nr_isolated_anon :从anon lru临时隔离的页面
nr_isolated_file :从文件lru临时隔离页面
nr_shmem :shmem和tmpfs使用的页面
nr_dirtied :自启动以来的页面脏化
nr_written :自启动以来的页面编写
numa_hit :一个进程想从这个节点分配内存,并且成功了
numa_miss :在非指定节点上分配
numa_foreign :一个进程想要在这个节点上进行分配,但最终获得了来自另一个节点的内存
numa_interleave :交织分配的页
numa_local :本地节点分配
numa_other :从其他节点分配
workingset_nodereclaim:影子节点被回收的次数
nr_anon_transparent_hugepages:匿名thp页的数量(以大页为单位,即不以4k为单位记)
nr_free_cma :空闲的CMA(连续内存分配器)页数
pgpgin :读入的页数
pgpgout :写出的页数
pswpin :读入的交换分区页数
pswpout :换出的交换分区页数
pgalloc_dma :从zone dma分配的页数
pgalloc_dma32 :从zone dma32分配的页数
pgalloc_normal :从zone normal分配的页数
pgalloc_movable :从zone movable分配的页数
pgfree :释放的页数
pgactivate :放到active链表上的页数
pgdeactivate :放到inactive链表上的页数
pgfault :缺页数量
pgmajfault :需通过读磁盘解决的缺页数量
pginodesteal :从启动到现在通过释放inode节点回收的页面数
kswapd_inodesteal:从启动到现在由kswapd通过释放inode节点回收的页面数
thp_fault_alloc :每当处理缺页异常时,一个大页面被成功分配,thp_fault_alloc就会增加。这适用于第一次出现缺页异常和COW错误
thp_fault_fallback :如果缺页异常失败的分配一个大页,则thp_fault_fallback被增加,而回退使用小页面
thp_collapse_alloc :当它发现一个范围的页面坍缩成一个大页,并有成功分配一个新的巨大页来存储数据,thp_collapse_alloc会被khugepaged增加
thp_collapse_alloc_failed :当它发现一个范围的页面应该被坍缩成一个大页, 但是分配大页失败,thp_collapse_alloc_failed会被khugepaged增加
thp_zero_page_alloc :缺页时,若地址所在vma是只读,会默认分配THP zero page,并且内核只保存一份零页,在其他只读vma缺页时,也会共享这个零页,不再重新分配。该事件只记录从伙伴系统成功分配零页的次数
thp_zero_page_alloc_failed:该事件只记录从伙伴系统未成功分配零页的次数
balloon_inflate :填充balloon的次数
balloon_deflate :收缩balloon的次数
balloon_migrate :balloon中的page迁移的次数
1.2. 监控网络
cat /proc/net/dev
Receive :接收包
Transmit:发送包
bytes :接口发送或接收的数据的总字节数
packets :接口发送或接收的数据包总数
errs :发送或接收错误的总数
drop :丢弃的数据包总数
fifo :FIFO缓冲区错误的数量
frame :分组帧错误的数量
compressed:备驱动程序发送或接收的压缩数据包数
multicast:设备驱动程序发送或接收的多播帧数
1.3. 查看文件锁
cat /proc/locks
- 第一列表示序列号。
- 第二列表示锁类别,例如 FLOCK(来自flock系统调用)或 POSIX(来自lockf,fcntl系统调用)。
- 第三列表示锁类型。它可以有两个值:ADVISORY 或 MANDATORY。
- 第四列表示该锁是 WRITE 还是 READ 锁。
- 第五列表示锁的进程 ID。
- 第六列包含一个冒号分隔的字符串,以“ major-device:minor-device:inode”的格式显示锁定文件的 ID。
- 第七列表示被锁定文件的锁定区域的开始。
- 第八列表示被锁定文件的锁定区域的结束。
1.4. 系统统计数据
cat /proc/stat
CPU列解释(单位:jiffies。1 jiffies = 10ms)
- 第二列:用户态时间(user)
- 第三列:用户态时间(低优先级,nice)
- 第四列:内核态时间(system)
- 第五列:空闲时间(idle)
- 第六列:I/O等待时间(iowait)
- 第七列:硬中断(irq)
- 第八列:软中断(softirq)
intr:系统启动以来的所有interrupts的次数情况
ctxt:系统上下文切换次数
btime:启动时长(单位:秒),从Epoch(即1970零时)开始到系统启动所经过的时长,每次启动会改变。
processes:系统启动后所创建过的进程数量。当短时间该值特别大,系统可能出现异常
procs_running:处于Runnable状态的进程个数
procs_blockedL:处于等待I/O完成的进程个数
softirq:
2. /proc/[pid] 进程信息
每个正在运行的进程都有一个数值子目录,子目录以进程ID命名。每个这样的子目录包含以下伪文件和目录。
cgroup | 该文件描述流程/任务所属的控制组(只有在启用了CONFIG_CGROUPS内核配置选项时,才会出现这个文件)。 |
以冒号为分割,分别存在3列 | |
第1列:等级身份证号 | |
第2列:绑定到层次结构的子系统的集合 | |
第3列:流程所属的层次结构中的控制组 | |
coredump_filter | 看到核心(5) |
cpuset | 看到cpuset(7) |
cwd | 指向进程当前工作目录的符号链接 |
exe | 该文件是一个符号链接,包含所执行命令的实际路径名。这种符号链接可以正常解除,试图打开它将打开可执行文件。甚至可以输入 /proc/[pid]/exe 来运行该进程正在运行的同一可执行文件的另一个副本;即使该进程已经死掉,/proc/[pid]/exe 仍然可以保持运行 |
fd | 这是一个子目录,其中包含进程已打开的每个文件的一个条目,根据其文件描述符命名,它是到实际文件的符号链接。因此,0是标准输入,1是标准输出,2是标准误差 |
fdinfo | 这是一个子目录,为进程打开的每个文件包含一个条目,根据其文件描述符命名。可以通过读取每个文件的内容来获取相应文件描述符的信息 |
limits | 显示每个进程的资源限制的软限制、硬限制和度量单位 |
map_files | 此子目录包含与内存映射文件对应的条目。映射文件本身的符号链接 |
maps | 包含当前映射的内存区域及其访问权限的文件 |
perms 列解释 | |
r = read | |
w = write | |
x = execute | |
s = shared | |
p = private (copy on write) | |
mem | 该文件可用于通过open(2)、read(2)和lseek(2)访问进程内存中的页面。 |
mountinfo | 包含关于挂载点的信息 |
mounts | 当前挂载在进程的挂载命名空间中的所有文件系统的列表 |
mountstats | 显示关于进程名称空间中挂载点的信息(统计信息、配置信息) |
device /dev/sda7 mounted on /home with fstype ext3 [statistics] | |
( 1 ) ( 2 ) (3 ) (4) | |
1、挂载设备的名称(如果没有对应的设备,则为“nodevice”) | |
2、文件系统树中的挂载点 | |
3、文件系统类型 | |
4、可选统计和配置信息目前(从Linux 2.6.26开始),只有NFS文件系统通过该字段导出信息 | |
ns | 这是一个子目录,为支持setns(2)操作的每个名称空间包含一个条目 |
numa_maps | See numa(7) |
oom_adj | 该文件可用于调整用于选择在内存不足(OOM)情况下应该杀死哪个进程的评分。这个文件的默认值是0,新进程继承其父进程的oom_adj设置。 |
-16到+15之间,加上特殊值-17,这将完全禁用该进程的oom kill。一个正的分数增加了这个过程被OOM-杀手杀死的可能性;负值则会降低这种可能性。 | |
oom_score | 该文件显示内核给该进程的当前分数,以便为oom杀手选择一个进程。分数越高,流程越有可能被oom杀手选择 |
oom_score_adj | 此文件可用于调整坏程度启发式,该启发式用于选择在内存不足的情况下杀死哪个进程。 |
坏度启发式为每个候选任务分配一个从0(从不杀死)到1000(总是杀死)的值,以确定哪个进程被tar - get | |
root | 指向进程根目录的符号链接,其行为与exe、fd/*等类似 |
smaps | 显示每个进程映射的内存消耗(只有在启用了CONFIG_MMU内核配置选项时,才会出现这个文件) |
2.1. 查看进程内存
cat /proc/[pid]/statm
每列解释:
1:总程序大小(与/proc/[pid]/status中的VmSize相同)
2:resident大小(与/proc/[pid]/status中的VmRSS相同)
3:共享页面
4:文字(代码)
5:库
6:数据 + 堆栈
7:脏页面
2.2. 查看进程I/O
cat /proc/[pid]io
rchar:读取的字节数。它包括终端I/O等内容,并且不受是否需要实际物理磁盘I/O的影响(可能已经从页面缓存中满足了读操作)
wchar:已导致或将导致写入磁盘的字节数
syscr:计算读I/O的数量
syscw:统计写I/O的数量
read_bytes :计算磁盘读取的字节数
write_bytes:计算磁盘写入的字节数。
cancelled_write_bytes:这里最大的误差是截断。如果一个进程向一个文件写入1MB,然后删除该文件,它实际上不会执行任何写操作。但是它会被认为造成了1MB的写。换句话说:该字段表示该进程通过截断pagecache而导致不发生的字节数。任务也可能导致“负”I/O。如果这个任务截断了一些脏页面缓存,那么另一个任务已经占用的I/O(在它的write_bytes中)将不会发生。
2.3. 查看进程挂载点信息
包含关于挂载点的信息
cat /proc/[pid]/mountinfo
示例对应列:
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
每列解释:
1、mount ID:挂载的唯一标识符(可以在umount(2)之后重用)
2、parent ID:父挂载的ID(或挂载树顶部的self的ID)
3、major:minor:文件系统上文件的st_dev值(参见stat(2))
4、root:文件系统内挂载的根目录
5、挂载点:相对于进程根的挂载点
6、挂载选项:每次挂载选项
7、可选字段:零或多个“标签[:值]”形式的字段
8、separator:标识可选字段的结束
9、文件系统类型:文件系统名称,格式为“type[.subtype]”
10、挂载源:文件系统特定的信息或“none”
11、超级选项:每个超级块的选项
显示关于进程名称空间中挂载点的信息(统计信息、配置信息)
cat /proc/[pid]/mountstats
示例对应列:
device /dev/sda7 mounted on /home with fstype ext3 [statistics]
( 1 ) ( 2 ) (3 ) (4)
每列解释:
1、挂载设备的名称(如果没有对应的设备,则为“nodevice”)
2、文件系统树中的挂载点
3、文件系统类型
4、可选统计和配置信息目前(从Linux 2.6.26开始),只有NFS文件系统通过该字段导出信息
2.4. 查看进程的状态信息
cat /proc/[pid]/stat
每列解释:
1:进程号
2:可执行文件的文件名,在括号中
3:进程状态(R正在运行,S在可中断的等待中休眠,D在不可中断的磁盘休眠中等待,Z是僵尸,T被跟踪或停止(在信号上),W是分页)
4:父进程的PID
5:进程所属的进程组ID
6:进程的会话ID
7:进程的控制终端(次要设备号包含在位31到20和位7到0的组合中;主设备号以15到8位为单位)
8:进程控制终端的前台进程组ID
9:内核标记进程的字
10:进程发生的不需要从磁盘加载内存页的小错误的数量
11:进程等待子进程所犯的小错误的数量
12:进程发生的需要从磁盘加载内存页的主要错误的数量
13:进程的等待子进程所犯的主要错误的数量
14:在用户模式下调度此进程的时间总量,以时钟滴答数衡量(除以sysconf(_SC_CLK_TCK))。这包括guest时间,guest_time(运行虚拟CPU所花费的时间),以便不知道来宾时间字段的应用程序不会在计算中丢失该时间。
15:在内核模式下调度此进程的时间总量,以时钟滴答数衡量(除以sysconf(_SC_CLK_TCK))
16:在用户模式下调度此进程等待的子进程的时间总量,以时钟滴答数计算(除以sysconf(_SC_CLK_TCK))
17:此进程等待的子进程在内核模式下被调度的时间,以时钟滴答数(除以sysconf (_SC_CLK_TCK))
18:对于运行实时调度策略。这是负的调度优先级,减1;即-2 ~ -100之间的数字,对应实时优先级1 ~ 99。对于在非实时调度策略下运行的进程,这是内核中表示的原始nice值(setpriority(2))。内核将漂亮值存储为范围为0(高)到39(低)的数字,对应于用户可见的漂亮值范围-20到19。
19:nice值,取值范围为19(低优先级)到-20(高优先级)
20:此进程中的线程数
21:由于间隔计时器,下一个SIGALRM被发送到进程之前的以jiffies为单位的时间
22:系统引导后进程启动的时间
23:虚拟内存大小(以字节为单位)
24:常驻设置大小(进程在实际内存中的页数。这只是计入文本、数据或堆栈空间的页面。这不包括未按需加载的页面或已交换出的页面)
25:进程的rss上的当前软限制(以字节为单位)
26:程序文本可以运行的地址
27:可以运行程序文本的地址
28:堆栈的起始地址(即底部)
29:ESP(堆栈指针)的当前值,可以在进程的内核堆栈页面中找到
30:当前的EIP(指令指针)
31:待定信号的位图,显示为十进制数。过时,因为它不提供实时信号的信息;使用/proc/[pid) /状态
32:阻塞信号的位图,显示为十进制数。过时,因为它不提供实时信号的信息;使用/proc/[pid) /状态
33:被忽略信号的位图,显示为十进制数。过时,因为它不提供实时信号的信息;使用/proc/[pid) /状态
34:捕获信号的位图,显示为十进制数。过时,因为它不提供实时信号的信息;使用/proc/[pid) /状态
35:这是进程正在等待的“通道”。它是系统调用的地址,如果需要文本名称,可以在名称列表中查找
36:交换的页数
37:子进程的累积nswap
38:死后传给父母的信号
39:上次执行的CPU编号
40:实时调度优先级,对于在实时策略下调度的进程,取值范围为1到99,对于非实时策略,取值范围为0
41:调度策略
42:聚合块I/O延迟
43:进程的Guest时间(为来宾操作系统运行虚拟CPU所花费的时间)
44:Guest进程子进程的时间
45:地址上面的程序数据+bss
46:地址下面的程序数据+bss
47:可以用brk()扩展程序堆上面的地址
48:位于程序命令行上方的地址
49:位于程序命令行下面的地址
50:位于程序环境上方的地址
51:位于程序环境下方的地址
52:线程的exit_code形式由waitpid系统报告
cat /proc/[pid]/status
每行解释:
Name:此进程运行的命令
State:进程的当前状态“R(运行)”、“S(休眠)”、“D(硬盘休眠)”、“T(停止)”、“T(跟踪停止)”、“Z(僵尸)”中选择一个,或“X(死)”
Tgid:线程组ID(即进程ID)
Pid :线程ID
PPid :父进程PID
TracerPid:跟踪此进程的进程的PID(如果没有被跟踪则为0)
Uid, Gid :真实、有效、保存集和文件系统Uid (Gid)
FDSize :当前分配的文件描述符槽数
Groups :补充组列表
VmPeak :虚拟内存的峰值大小
VmSize :虚拟内存大小
VmLck :锁定内存大小
VmHWM :峰值居民设置大小(“高水位标记”)
VmRSS :常驻设置大小
VmData, VmStk, VmExe:数据,堆栈和文本段的大小
VmLib :共享库代码大小
VmPTE :页表项大小
Threads :包含该线程的进程中的线程数
SigQ :此字段包含两个用斜杠分隔的数字,它们与此进程的真实用户ID的队列信号有关。第一个是这个真实用户ID的当前排队信号的数量,第二个是这个进程的排队信号数量的资源限制
SigPnd, ShdPnd:线程和进程作为一个整体的等待信号的数量
SigBlk, SigIgn, SigCgt:表示信号被阻塞,忽略和捕获的掩码
CapInh, CapPrm, CapEff:在可继承集,允许集和有效集中启用的能力掩码
CapBnd :能力边界集
Cpus_allowed :此进程可能运行的cpu的掩码
Cpus_allowed_list:与前面相同,但采用“列表格式”
Mems_allowed :该进程允许的内存节点掩码
Mems_allowed_list:与前面相同,但采用“列表格式”
voluntey_context_switches, nonvoluntey_context_switches:自愿和非自愿上下文切换的数量
3. 详细文件解释
伪文件 | 解释 |
/proc/[pid] | 根据PID显示进程信息 |
/proc/apm | 显示高级电源管理版本和电池信息 |
/proc/bus | 包含已安装总线的子目录 |
/proc/bus/pccard | 在内核编译时设置CONFIG_PCMCIA时PCMCIA设备的子目录 |
/proc/bus/pci | 包含各种总线子目录和伪文件,其中包含关于PCI总线、已安装设备和设备驱动程序的信息 |
/proc/bus/pci/devices | 关于PCI设备的信息 |
/proc/cmdline | 在引导时传递给Linux内核的参数 |
/proc/cpuinfo | 显示CPU信息 |
/proc/devices | 主要号码和设备组的文本列表 |
/proc/diskstats | 显示每个磁盘设备的磁盘I/O统计信息 |
/proc/dma | 这是正在使用的已注册ISA DMA(直接内存访问)通道的列表 |
/proc/driver | 显示驱动信息 |
/proc/execdomains | 执行域(ABI特性)的列表 |
/proc/fb | 在内核编译期间定义CONFIG_FB时的帧缓冲区信息 |
/proc/filesystems | 内核支持的文件系统的文本列表。如果一个文件系统标有“nodev”,这意味着它不需要挂载块设备(例如,虚拟文件系统、网络文件系统 |
/proc/fs | 包含子目录,这些子目录依次包含关于(某些)已挂载文件系统的信息的文件 |
/proc/interrupts | 记录每个CPU和每个IO设备的中断数 |
/proc/iomem | I/O内存映射 |
/proc/ioports | 正在使用的当前注册的输入输出端口区域的列表 |
/proc/kcore | 表示系统的物理内存,并以ELF核心文件格式存储 |
/proc/kmsg | 这个文件可以用来代替syslog(2)系统调用来读取内核消息 |
/proc/loadavg | 前3列为 1/5/15 分钟负载情况 |
第4列斜杠前表示当前可运行的内核调度实体(进程、线程)的数量。斜杠后的值是系统中当前存在的内核调度实体的数量 | |
第5列是系统上最近创建的进程的PID | |
/proc/locks | 显示当前的文件锁 |
/proc/meminfo | 显示内存使用情况 |
/proc/modules | 系统已加载的模块的文本列表 |
/proc/mounts | 显示进程自己的挂载名称空间的挂载点 |
/proc/mtrr | 内存类型范围寄存器 |
/proc/net | 各种网络伪文件,所有这些文件都给出了网络层某些部分的状态 |
/proc/net/arp | 显示网卡中地址等信息 |
/proc/net/dev | 显示接收和发送数据包的数量、错误和冲突的数量以及其他基本统计信息 |
/proc/net/dev_mcast | 显示网卡中的dmi地址 |
/proc/net/igmp | Internet 组管理协议 |
/proc/net/raw | 保存RAW套接字表的转储。除了调试之外,大部分信息都是无用的 |
/proc/net/snmp | 显示SNMP代理的IP、ICMP、TCP和UDP管理信息库所需的ASCII数据 |
/proc/net/tcp | 保存TCP套接字表的转储。除了调试之外,大部分信息都是无用的 |
/proc/net/udp | 保存UDP套接字表的转储。除了调试之外,大部分信息都是无用的 |
/proc/net/unix | 列出系统中出现的UNIX域套接字及其状态 |
/proc/partitions | 显示每个分区的主编号和次编号,以及块的数量和分区名称 |
/proc/profile | 只有在使用profile=1命令行选项引导内核时,才会出现这个文件。它以二进制格式公开内核分析信息,供readprofile(1)使用。向该文件写入(例如,一个空字符串)将重置分析计数器;在某些体系结构上,编写一个大小为sizeof(int)的二进制整数“分析乘数”来设置分析中断频率。 |
/proc/scsi | 包含系统中每个scsi主机的一个文件,所有这些目录都给出scsi IO子系统的某些部分的状态 |
/proc/scsi/scsi | 显示内核已知的所有SCSI设备的列表 |
/proc/self | 该目录指访问/proc文件系统的进程,与以进程ID命名的/proc目录相同 |
/proc/slabinfo | 显示内核缓存的信息 |
/proc/stat | 内核/系统统计数据 |
/proc/swaps | 交换使用的区域 |
/proc/sys | 这个目录包含许多与内核变量对应的文件和子目录 |
/proc/sys/abi | 此目录可能包含具有应用程序二进制信息的文件 |
/proc/sys/dev | 这个目录包含特定于设备的信息 |
/proc/sys/fs | 此目录包含与文件系统相关的内核变量的文件和子目录 |
/proc/sys/fs/binfmt_misc | 该目录下文件的文档可以在Linux内核源代码Documentation/binfmt_misc.txt中找到 |
/proc/sys/fs/dentry-state | 该文件包含有关目录缓存(dcache)状态的信息。该文件包含6个数字(nr_dentry, nr_unused, age_limit,want_pages 和 2 个假值) |
nr_dentry :是已分配dentry (dcache项)的数量该字段 | |
nr_unused :是未使用dentry的数量 | |
age_limit :是当内存不足时dcache条目可以被回收的秒数 | |
want_pages:为非零,当内核调用shrink_dcache_pages()并且dcache还没有修剪 | |
/proc/sys/fs/dir-notify-enable | 该文件可用于在系统范围内禁用或启用dnotify接口。0表示关闭该接口,1表示启用该接口 |
/proc/sys/fs/dquot-max | 此文件显示缓存的磁盘配额项的最大数量。 |
如果空闲缓存磁盘配额项的数量非常低,而同时系统用户的数量非常多,那么可能需要提高限制。 | |
/proc/sys/fs/dquot-nr | 显示已分配的磁盘配额项数和空闲的磁盘配额项数 |
/proc/sys/fs/epoll | 此目录包含文件max_user_watches,该文件可用于限制epoll接口消耗的内核内存储量 |
/proc/sys/fs/file-max | 该文件对所有进程打开的文件数量定义了系统范围的限制。 |
进程可以使用它来设置每个进程可以打开的文件数量的限制RLIMIT_NOFILE。 | |
如果内核日志中得到大量关于耗尽文件句柄的错误消息,可以尝试: | |
echo 100000 > /proc/sys/fs/file-max | |
/proc/sys/fs/file-nr | 文件包含3列数字: |
1、已分配文件句柄的数量(即当前打开的文件数量) | |
2、空闲文件句柄数 | |
3、文件句柄的最大数量 | |
/proc/sys/fs/inode-max | 显示内存中inode的最大数量 |
/proc/sys/fs/inode-nr | 该文件包含来自inode-state的前两个值 |
/proc/sys/fs/inode-state | 该文件包含7个数字:nr_inodes、nr_free_inodes、preshrink 和4个虚拟值。 |
nr_inodes:系统已分配的inode的数量。 | |
nr_free_inodes:空闲inode的数量。 | |
preshrink:当nr_inodes > inode-max,统需要修剪inode列表而不是分配更多。 | |
/proc/sys/fs/inotify | 此目录包含的文件可用于限制 inotify 接口消耗的内核内存量 |
/proc/sys/fs/lease-break-time | 这个文件指定内核在向一个持有文件租约(fcntl(2))的进程发送信号通知另一个进程正在等待打开该文件后授予该进程的宽限 |
/proc/sys/fs/leases-enable | 该文件可用于在系统范围内启用或禁用文件租赁(fcntl(2))。如果该文件包含值0,则表示租约被禁用。非零值启用租期。 |
/proc/sys/fs/mqueue | 此目录包含文件msg_max、msgsize_max和queues_max,控制POSIX消息队列使用的资源 |
/proc/sys/fs/protected_hardlinks | 当这个文件中的值为0时,对硬链接的创建没有任何限制 |
当该值为1时,只有满足以下条件之一时,才能创建到目标文件的硬链接: | |
1、目标文件为常规文件 | |
2、目标文件没有启用set-user-ID权限位 | |
3、目标文件没有同时启用set-group-ID和group-可执行权限位 | |
4、调用者有读写目标文件的权限(通过文件的权限掩码或因为它有合适的功能) | |
关系) | |
/proc/sys/fs/protected_symlinks | 该文件中的默认值为0。将该值设置为1可以避免长期存在的一类基于访问符号链接时的检查时间和使用时间竞争的安全问题。 |
0表示对下面的符号链接没有任何限制 | |
1仅在以下情况下才会执行符号链接: | |
1、链接后面进程的文件系统UID与符号链接的所有者(UID)相匹配(如凭证(7)所述,进程的文件系统UID通常与其有效UID相同) | |
2、链接不在一个黏的世界可写目录中 | |
3、符号链接和和它的父目录有相同的所有者(UID) | |
/proc/sys/fs/suid_dumpable | 此文件中的值决定是否为set-user-ID或其他受保护/受污染的二进制文件生成核心转储文件。可以指定3个不同的整数值: |
0(默认):如果进程更改了凭证(通过调用seteuid(2)、setgid(2)或类似的方法,或者通过执行set-user-ID或set-group-ID程序),或者其二进制文件没有启用读权限,则不会生成核心转储。 | |
1(调试):所有进程都尽可能转储内核。核心转储由转储进程的文件系统用户ID拥有,不应用任何安全措施。这只适用于系统调试情况。Ptrace没有启用。 | |
2(suidsafe):任何通常不会被转储的二进制文件(参见上面的“0”)都被转储为仅根用户可读。这允许用户删除核心转储文件,但不读取它。出于安全考虑,这种模式下的核心转储不会相互覆盖或覆盖其他文件。当管理员试图在正常环境中调试问题时,此模式非常合适。 | |
/proc/sys/fs/super-max | 该文件控制超级块的最大数量,从而控制内核可以拥有的挂载文件系统的最大数量。如果需要挂载的文件系统多于super-max所允许的当前值,则只需要增加super-max。 |
/proc/sys/fs/super-nr | 该文件包含当前挂载的文件系统的数量 |
/proc/sys/kernel | 该目录包含控制一系列内核参数的文件 |
/proc/sys/kernel/acct | 该文件包含三个数字:高水位、低水位和频率。 |
如果启用bsd风格的过程核算,则这些值控制其行为。 | |
如果日志所在的文件系统上的空闲空间低于低水位百分比,则帐将挂起。 | |
如果空闲空间高于高水位,则恢复会计核算。频率决定内核检查可用空间量的频率(以秒为单位)。默认值为4、2和30。也就是说,如果有2%或更少的空闲空间,则暂停记帐;如果有4%或以上的空闲空间,则恢复它;考虑有关30秒内有效的空闲空间量的信息。 | |
/proc/sys/kernel/cap-bound | 该文件保存内核能力边界集的值 |
/proc/sys/kernel/core_pattern | 显示core文件生成的路径/格式 |
/proc/sys/kernel/core_uses_pid | 显示core文件后缀是否指定PID |
0表示core文件格式 为:core | |
1表示core文件格式为:core.[pid] | |
/proc/sys/kernel/dmesg_restrict | 该文件中的值决定谁可以查看内核syslog内容。 |
0没有任何限制。 | |
1表示只有特权用户可以读取内核syslog日志。只有具有CAP_SYS_ADMIN能力的用户才能更改这个文件中的值。 | |
/proc/sys/kernel/hostname | 主机名,手动设置: |
echo 'localhost' > /proc/sys/kernel/hostname | |
/proc/sys/kernel/domainname | 域名,手动设置: |
echo 'mydomain' > /proc/sys/kernel/domainname | |
/proc/sys/kernel/hotplug | 该文件包含热插拔策略代理的路径 |
/proc/sys/kernel/htab-reclaim | 如果该文件被设置为非零值,PowerPC的htab在每次系统进入空闲循环时都会被删除。 |
/proc/sys/kernel/kptr_restrict | 该文件决定内核地址是否通过/proc文件和其他接口公开。 |
0:没有任何限制。 | |
1:使用%pK格式说明符打印的内核指针将被替换为零,除非用户具有CAP_SYSLOG功能。 | |
2:使用%pK格式说明符打印的内核指针将被替换为0,而不管用户的能力如何 | |
/proc/sys/kernel/l2cr | 该文件包含一个标志,用于控制G3处理器板的L2缓存(仅适用于PowerPC)。 |
0表示缓存被禁用。 | |
非0表示启用。 | |
/proc/sys/kernel/modprobe | 该文件包含内核模块加载器的路径。默认 /sbin/modprobe |
/proc/sys/kernel/modules_disabled | 一个切换值,指示是否允许在模块化内核中加载模块 |
0表示 off,1表示 true | |
一旦为true,模块既不能加载也不能卸载,并且切换不能设置回 false。 | |
/proc/sys/kernel/msgmax | 指定写入System V消息队列上的单个消息的最大字节数 |
/proc/sys/kernel/msgmni | 该文件定义了消息队列标识符数量的系统范围限制 |
/proc/sys/kernel/msgmnb | 该文件定义了一个系统范围的参数,用于为随后创建的消息队列初始化 msg_qbytes 设置。msg_qbytes set‐ting 指定可以写入消息队列的最大字节数。 |
/proc/sys/kernel/ostype | 操作系统类型 |
/proc/sys/kernel/osrelease | 操作系统发行版本 |
/proc/sys/kernel/panic | 该文件提供对内核变量panic_timeout的读/写访问权。 |
0:内核将会在一个紧急状态下循环 | |
非0:表示内核应该在这个秒数之后自动重启。 | |
使用软件看门狗设备驱动程序时,建议设置为60。 | |
/proc/sys/kernel/panic_on_oops | 当遇到oops或BUG时,这个文件控制内核的行为。 |
包含0:则系统尝试继续操作。 | |
包含1:那么系统将延迟几秒钟(给klogd时间来记录oops输出),然后出现恐慌。 | |
如果/proc/sys/kernel/panic文件也非零,则机器将重新启动。 | |
/proc/sys/kernel/pid_max | 这个文件指定PID绕的值(即这个文件中的值比最大PID大1)。 |
此文件的默认值32768的结果与早期内核上的pid范围相同。 | |
在32位平台上,32768是pid_max的最大值。 | |
在64位系统上,pid_max可以设置为2^22 (PID_MAX_LIMIT约为400万)以内的任何值。 | |
/proc/sys/kernel/powersave-nap | 该文件包含一个标志。如果设置了,Linux-PPC将使用“nap”模式省电,否则将使用“doze”模式。 |
/proc/sys/kernel/printk | 显示 4 列日志控制信息 |
console_loglevel:控制台日志级别 | |
default_message_loglevel:缺省消息日志级别 | |
minimum_console_level:最低控制台 | |
default_console_loglevel:默认控制台日志级别 | |
/proc/sys/kernel/pty | 此目录包含两个与系统上UNIX 98伪终端数量 |
/proc/sys/kernel/pty/max | 此文件定义伪终端的最大数量 |
/proc/sys/kernel/pty/nr | 这个只读文件指示当前正在使用的伪终端的数量 |
/proc/sys/kernel/random | 这个目录包含控制文件/dev/random操作的各种参数 |
/proc/sys/kernel/real-root-dev | 该文件在Linux内核源文件 Documentation/initrd.txt 中 |
/proc/sys/kernel/sem | 该文件输出 4 列数字 |
1、SEMMSL每个信号量集合的最大信号量 | |
2、SEMMNS在系统范围内对所有信号量集中的信号量数量的限制 | |
3、SEMOPM semop(2)调用中可以指定的最大操作数 | |
4、SEMMNI在系统范围内对信号量标识符的最大数量的限制 | |
/proc/sys/kernel/shm_rmid_forced | 如果这个文件设置为1,所有System V共享内存段将被标记为销毁,一旦附加进程的数量下降到零;换句话说,不再可能创建独立于任何附加进程存在的共享内存段。 |
效果就像shmctl(2) IPC_RMID会在所有现有的段以及将来创建的所有段上执行(直到这个文件被重置为0)。 | |
/proc/sys/kernel/shmall | 该文件包含系统范围内对System V共享内存总页面数的限制 |
/proc/sys/kernel/shmmax | 该文件可用于查询和设置可创建的最大(System V IPC)共享内存段大小的运行时限制。内核中现在支持最多1GB的共享内存段。该值默认为SHMMAX |
/proc/sys/kernel/shmmni | 该文件指定系统范围内可以创建的System V共享内存段的最大数量 |
/proc/sys/kernel/sysrq | 该文件控制SysRq键允许调用的函数(默认 1) |
0 :完全禁用sysrq | |
1 :开启sysrq的所有功能 | |
1-允许sysrq函数的1位掩码,如下所示: | |
2 -启用控制台日志级别控制 | |
4 -使能键盘控制(SAK, unraw) | |
8 -打开调试转储进程等。 | |
16 -enable sync命令 | |
32 -启用只读重挂 | |
64 -启用进程的信号(term, kill, oom-kill) | |
128 -允许重启/关机 | |
256 -允许所有实时任务的精细处理 | |
/proc/sys/kernel/version | #5 表示这是从这个源库构建的第五个内核 |
后面的日期表示内核构建的时间 | |
/proc/sys/kernel/threads-max | 该文件指定了系统范围内可以在系统上创建的线程(任务)数量的限制 |
/proc/sys/kernel/zero-paged | 该文件包含一个标志。 |
当启用(非零)时,Linux-PPC将在空闲循环中将页面预置为零,可能会加速get_free_pages。 | |
/proc/sys/net | 这个目录包含网络内容 |
/proc/sys/net/core/somaxconn | 这个文件为listen(2)的backlog参数定义了一个上限值 |
/proc/sys/sunrpc | 该目录支持对网络文件系统(NFS)的Sun远程过程调用 |
/proc/sys/vm | 此目录包含用于内存管理调优、缓冲区和缓存管理的文件 |
/proc/sys/vm/drop_caches | 写入此文件将导致内核从内存中删除干净的缓存、dentry和inode |
echo 1 > /proc/sys/vm/drop_caches | |
释放页面缓存 | |
echo 2 > /proc/sys/vm/drop_caches | |
释放dentry、inode | |
echo 3 > /proc/sys/vm/drop_caches | |
释放页面缓存、dentry、inode | |
注意: | |
这是一个非破坏性操作,脏对象是不可释放的,所以需要先运行sync | |
/proc/sys/vm/legacy_va_layout | 如果非零,则禁用新的32位内存映射布局;内核将对所有进程使用遗留的(2.4)布局 |
/proc/sys/vm/memory_failure_early_kill | 控制当硬件在后台检测到内核无法处理的未纠正的内存错误(通常是内存模块中的2位错误)时如何杀死进程。 |
在某些情况下(比如页面在磁盘上仍然有一个有效的副本),内核将透明地处理故障,而不会影响任何应用程序。但是如果没有其他最新的数据副本,它将终止进程,以防止任何数据损坏的传播。 | |
0:只从所有进程解除损坏页面的映射,只杀死试图访问它的进程。 | |
1:一旦检测到损坏,立即杀死所有映射了损坏且不可重新加载页面的进程。注意,这对于少数类型的页面(如内核内部分配数据或交换缓存)不支持,但适用于大多数用户页面。 | |
/proc/sys/vm/memory_failure_recovery | 启用内存故障恢复(只在内核配置了CONFIG_MEMORY_FAILURE时出现) |
0:内存故障时总是惊慌失措 | |
1:尝试恢复 | |
/proc/sys/vm/oom_dump_tasks | 允许在内核执行oom -kill时生成系统范围的任务转储(不包括内核线程)。 |
转储包括每个任务(线程、进程)的以下信息:线程ID、真实用户ID、线程组ID(进程ID)、虚拟内存大小、驻留集大小、任务调度的CPU、oom_adj评分和命令名称。 | |
/proc/sys/vm/oom_kill_allocating_task | 这将启用或禁用在内存不足的情况下杀死oom触发任务(默认 0) |
如果这被设置为0,那么OOM-killer将扫描整个任务列表,并基于启发式选择一个任务进行杀死。这通常会选择一个非法占用内存的任务,该任务在被杀死时会释放大量内存。 | |
如果将该值设置为非0,则oom -kill只会终止触发内存不足条件的任务。这避免了可能昂贵的任务列表扫描。 | |
/proc/sys/vm/overcommit_memory | 该文件包含内核虚拟内存计费模式(默认 0) |
0:启发式的过量使用 | |
1:总是过度承诺,从不检查 | |
2:经常检查,不要过度承诺 | |
/proc/sys/vm/panic_on_oom | 这将在内存不足的情况下启用或禁用内核恐慌。 |
如果将该文件设置为0,内核的OOM-killer将杀死某些恶意进程。通常,oom杀手能够杀死一个流氓进程,系统将存活下来 | |
如果将该文件设置为值1,那么当发生内存不足时,内核通常会出现恐慌。然而,如果一个进程使用内存策略(mbind(2) MPOL_BIND)或cpu集(cpuset(7))将分配限制到某些节点,并且这些节点达到内存耗尽的状态,一个进程可能会被OOM-killer杀死。在这种情况下不会出现恐慌:因为其他节点的内存可能是空闲的,这意味着整个系统可能还没有达到内存不足的情况 | |
/proc/sys/vm/swappiness | 该文件中的值控制内核交换内存页的力度(默认60) |
较高的值增加攻击性 | |
较低的值减少攻击性 | |
/proc/sysvipc | 包含伪文件msg、sem和shm的子目录。这些文件列出了当前存在于系统上的System V进程间通信(IPC)对象(分别是:消息队列、信号量和共享内存),提供了与ipcs(1)提供的信息类似的信息。为了便于理解,这些文件具有头文件和格式化文件(每行一个IPC对象)。Svipc(7)对这些文件显示的信息提供了进一步的背景信息。 |
/proc/tty | 子目录包含tty驱动程序和行规程的伪文件和子目录。 |
/proc/uptime | 该文件包含两个数字:系统的正常运行时间(秒)和在空闲进程中花费的时间(秒) |
/proc/version | 显示内核版本 |
/proc/vmstat | 显示虚拟内存统计信息 |
/proc/zoneinfo | 显示有关内存分区的信息 |