首页 > 系统相关 >如何使用/proc文件系统监控Linux系统?

如何使用/proc文件系统监控Linux系统?

时间:2024-03-04 10:22:53浏览次数:24  
标签:文件 系统 文件系统 Linux 进程 proc 目录

如何使用/proc文件系统监控Linux系统?

原创 漫谈君 运维漫谈 2024-02-29 09:58 江苏

图片

/proc是Linux系统中的一个虚拟文件系统,提供了对运行中内核和进程的实时访问。这个目录下包含了很多以数字命名的目录,每个目录代表一个运行中的进程或者系统信息。每个进程目录下有许多文件,这些文件包含了有关进程的各种信息。

/proc的独特之处在于,它不包含任何实际的数据文件。相反,它包含一系列的虚拟文件,这些文件的内容是内核和进程状态的实时表示。

图片

/proc的挂载

Linux系统在启动时会自动挂载/proc文件系统。你可以通过查看/proc/mounts文件来确认/proc是否已经挂载。

cat /proc/mounts | grep /proc
图片

如果/proc已经挂载,你会看到类似于下面的输出:

proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0

这表示/proc以可读写的方式挂载,并且不支持setuid和setgid,不允许执行程序。

/proc文件系统的挂载是系统启动的一部分,通常不需要手动干预。

监控系统信息

查看CPU信息

/proc/cpuinfo文件提供了有关系统中CPU的详细信息。通过查看这个文件,你可以了解到有多少个CPU核心、CPU型号、频率等。

cat /proc/cpuinfo

这将输出一系列关于每个CPU核心的信息。例如:

processor       : 0
vendor_id : GenuineIntel
cpu family : 6
model : 165
model name : Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz
stepping : 5
microcode : 0xf8
cpu MHz : 2900.000
cache size : 16384 KB
physical id : 0
siblings : 16
core id : 0
cpu cores : 8
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 22
wp : yes
...
图片

这显示了第一个CPU核心的一些基本信息。

查看内存信息

/proc/meminfo文件包含了系统内存的详细信息,如总内存、可用内存、缓存、交换空间等。

cat /proc/meminfo

输出可能类似于:

MemTotal:       16007472 kB
MemFree: 11313876 kB
MemAvailable: 12514856 kB
Buffers: 224912 kB
Cached: 1171616 kB
SwapCached: 124276 kB
Active: 1581620 kB
Inactive: 2676820 kB
Active(anon): 1041760 kB
Inactive(anon): 1820624 kB
Active(file): 539860 kB
Inactive(file): 856196 kB
Unevictable: 124 kB
Mlocked: 0 kB
SwapTotal: 2097148 kB
SwapFree: 1538508 kB
Dirty: 84 kB
Writeback: 0 kB
AnonPages: 2821148 kB
Mapped: 104816 kB
Shmem: 464 kB
KReclaimable: 119864 kB
Slab: 240620 kB
SReclaimable: 119864 kB
SUnreclaim: 120756 kB
KernelStack: 7508 kB
PageTables: 12740 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 10100884 kB
Committed_AS: 4445172 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 59984 kB
VmallocChunk: 0 kB
Percpu: 18752 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 661580 kB
DirectMap2M: 15751168 kB
DirectMap1G: 1048576 kB
图片

这提供了系统当前的内存状态。MemTotal表示总内存,MemFree表示空闲内存,Buffers和Cached表示已经使用的缓存。

监控进程

查看进程列表

/proc目录下包含了以数字命名的目录,每个目录对应一个运行中的进程。你可以使用ls /proc命令来查看当前系统中运行的进程。

ls /proc
图片

输出将是一系列数字,每个数字代表一个进程ID (PID)。

查看进程详细信息

进入一个特定的进程目录,你可以查看有关该进程的详细信息。例如,进程ID为114的进程:

cat /proc/114/status

这将输出关于该进程的详细信息,如进程状态、内存使用情况等。

Name:   writeback
Umask: 0000
State: I (idle)
Tgid: 114
Ngid: 0
Pid: 114
PPid: 2
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 64
Groups:
NStgid: 114
NSpid: 114
NSpgid: 0
NSsid: 0
Threads: 1
SigQ: 0/62211
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: ffffffffffffffff
SigCgt: 0000000000000000
CapInh: 0000000000000000
CapPrm: 000001ffffffffff
CapEff: 000001ffffffffff
CapBnd: 000001ffffffffff
CapAmb: 0000000000000000
...
图片

其中,Name表示进程名,State表示进程状态,Tgid表示线程组ID,Pid表示进程ID,PPid表示父进程ID等。

跟踪系统性能

查看系统负载

系统的负载是指系统中活跃进程的数量。/proc/loadavg文件包含了有关系统负载的信息。

cat /proc/loadavg

输出将是一个包含多个值的行,其中最前面的三个值分别表示1分钟、5分钟和15分钟的平均负载。

0.06 0.04 0.01 1/457 2403028
图片

这里,0.10是1分钟的平均负载,0.25是5分钟的平均负载,0.30是15分钟的平均负载。最后的两个数字表示正在运行的和总的进程数。

查看网络统计

/proc/net目录提供了有关网络接口的统计信息。你可以使用以下命令查看网络接口的统计数据。

cat /proc/net/dev

这将输出有关每个网络接口的信息,包括接收和发送的数据包数量、错误数等。

Inter-|   Receive                                                |  Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 30934717 87533 0 0 0 0 0 0 30934717 87533 0 0 0 0 0 0
enp3s0: 2589539029 8962291 0 236438 0 0 0 1019791 15337518913 12403934 0 0 0 0 0 0
图片

在上述输出中,eth0是网络接口的名称,接收和发送的数据包数量、错误数等都可以从中得知。

调试与优化

跟踪系统调用

在/proc/sys/kernel目录下的syscall文件包含了系统调用的数量。通过查看这个文件,你可以了解系统调用的使用情况。

cat /proc/sys/kernel/syscall

输出将显示系统调用的数量。

10000

这里的数字表示系统已经执行的系统调用的数量。

动态调整内核参数

通过/proc/sys目录,你可以动态调整内核参数,例如修改文件句柄限制。假设你想修改文件句柄的最大数量,可以使用以下命令:

echo 100000 > /proc/sys/fs/file-max

这会将文件句柄的最大数量设置为100000。

这样的调整是临时的,如果系统重新启动,设置将会失效。如果需要永久性的设置,你应该将相关的修改添加到系统的启动脚本或使用系统特定的配置工具。

运维漫谈 运维漫谈,漫谈整个网络安全、云计算、大数据、数据库、开发等运维技术干货,旨在分享干货,帮您更快学习相关知识,解决问题,同时还有福利活动哦,关注我,带你成为大神,遨游技术海洋! 382篇原创内容 公众号

 

图片

 

linux457 文件系统11 linux · 目录 上一篇Linux 中什么时候用 systemctl mask命令,什么时候用 systemctl disable 命令?下一篇如何在 Linux 中快速清空文件而不删除它们? 阅读 1055 运维漫谈   ​   喜欢此内容的人还喜欢   如何在 Linux 中安装 Fish Shell(带 Starship)?     运维漫谈 不看的原因   亿级数据量表SQL调优实战     11来了 不看的原因   掌握Linux内存故障追踪:技术指南     Linux内核之旅 不看的原因   写下你的留言             复制搜一搜分享收藏划线    

人划线

标签:文件,系统,文件系统,Linux,进程,proc,目录
From: https://www.cnblogs.com/cherishthepresent/p/18051283

相关文章

  • Linux 监控工具htop
    htopyum安装[root@localhost~]#yum-yinstallepel-release[root@localhost~]#yuminstallhtop[root@localhost~]#yum-yinstallepel-release[root@localhost~]#yuminstallhtop[root@localhost~]#htop......
  • linux指令:dpkg和apt
    dpkg是debian包管理器,一般来说用于管理已下载好的deb包1.安装指令dpkg-i<路径下的包名> 2.列出路径下的包及其状态dpkg-l其中前面两个代表状态的字母分别是包的期望状态和当前状态 也可以在-l之后加上关键词筛选 3.删除指定的包dpkg-r<路径下的包名>......
  • linux指令:chmod
    全名changemode改变文件的权限语法:chmod<object+mod><file> 其中mod可以是读(r)写(w)执行(x)等权限,object表示对什么对象(所有,a;同一组成员,g;所有者,u;其他,o)进行权限改变例子:chmodg+w,g-r1.txt表示对1.txt修改操作:在同一用户组下赋予(+)写(w)的权限,但去除(-)读......
  • Linux shell 标准输入(stdin)、标准输出(stdout)、标准错误输出(stderr)介绍
    Linux系统shell使用文件描述符0与进程的标准输入(一般是键盘)相关联,文件描述符1与标准输出(一般是显示器)相关联,文件描述符2与标准出错输出(一般是显示器)相关联。1、可以将/dev/null看作"黑洞".它非常等价于一个只写文件.所有写入它的内容都会永远丢失.而尝试从它那儿读取内容则什......
  • linux基于VSCODE搭建stm32开发环境
    1.安装VSCODEhttps://code.visualstudio.com/2.安装系统相关编译软件sudoaptinstallbuild-essentialgdbsudoaptinstallgcc-arm-none-eabisudoaptinstallmakecmakesudoaptinstallopenocd3.安装VSCODE插件cortex-debug  4 安装stlink驱动下载地址......
  • 如何使用/proc文件系统监控Linux系统
    如何使用/proc文件系统监控Linux系统?原创 漫谈君 运维漫谈 2024-02-2909:58 江苏 听全文/proc是Linux系统中的一个虚拟文件系统,提供了对运行中内核和进程的实时访问。这个目录下包含了很多以数字命名的目录,每个目录代表一个运行中的进程或者系统信息。每个进程目录......
  • Linux安装Docker并搭建MySql、Redis、RabbitMQ
    1.1安装docker(1)删除老版本sudoyumremovedocker\docker-client\docker-client-latest\docker-common\docker-latest\docker-latest-logrotate\......
  • linux基于STM32CUBE IDE搭建stm32开发环境
    1.安装STM32CUBEMX安装地址https://www.st.com/zh/development-tools/stm32cubemx.html2.安装STM32CUBEIDE安装地址https://www.st.com/zh/development-tools/stm32cubeide.html3.安装烧写相关软件3.1安装openocd方法1:命令安装(不推荐,因为默认安装的是0.10.0,不支持......
  • linux基于clion搭建stm32开发环境
    1.安装开发工具1.1安装stm32cubemx下载地址https://www.st.com/zh/development-tools/stm32cubemx.html1.2安装clion方法1:直接下载clion,下载地址https://www.jetbrains.com/clion/download方法2:通过JetBrainsToolBox下载,JetBrainsToolBox下载地址https://www.j......
  • Linux学习-day7
    Linux文件操作篇1vim编辑器vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说,vi是老式的字处理器,不过功能已经很齐全了......