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

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

时间:2024-03-03 18:13:08浏览次数:31  
标签:文件 运维 系统 文件系统 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 中快速清空文件而不删除它们? 阅读 902 运维漫谈 ​ 分享此内容的人还喜欢   如何在 Linux 上向 Hosts 文件添加静态条目?     运维漫谈 不看的原因   运维加薪技术——Linux 内核机制     我看过的号 运维进阶部落 不看的原因   为什么 Golang Fasthttp 选择使用 slice 而非 map 存储请求数据     我常看的号 码途漫漫 不看的原因   写留言              

人划线

标签:文件,运维,系统,文件系统,Linux,进程,proc
From: https://www.cnblogs.com/cheyunhua/p/18050379

相关文章

  • 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是老式的字处理器,不过功能已经很齐全了......
  • ElasticSearch系列---【linux离线安装elasticsearch7.8集群】
    linux离线安装elasticsearch7.81.官网下载地址https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-8-02.上传到服务器指定目录例如这里我上传到/opt/app/middles/目录下3.解压软件#解压缩tar-zxvfelasticsearch-7.8.0-linux-x86_64.tar.gz4.创建用户......
  • Linux 安装 Docker
    docker-ce是Docker官方的社区版包,它不包含在Ubuntu默认的存储库中。因此,你无法直接使用aptinstalldocker-ce命令安装docker-ce。你需要先添加Docker的官方GPG秘钥和存储库才能使用这个命令安装docker-ce。Docker官方为我们编写了一个脚本,可以快速为我们完成上面......
  • Linux 检查端口是否被占用
    使用netstat$sudonetstat-tulnp|grep':22'tcp000.0.0.0:220.0.0.0:*LISTEN963/sshd:/usr/sbin使用lsof$sudolsof-i:22COMMANDPIDUSERFDTYPEDEVICESIZE/OFFNODENAMEsshd9......
  • Linux_Centos_yum报错总结
    ​此篇适用于yum报错【尝试其他镜像】并且【curl外网】不通的情况,此时一般考虑是网络的问题一,出现的报错信息: 此时测试curl/pingwww.baidu.com会发现无法连通 二,解决方法:1,首先查看dns的配置文件/etc/resolv.conf检查这里的nameserver这里有时候会因为第二个网卡......
  • linux基本命令
    参考资料正点原子:http://www.openedv.com/docs/boards/arm-linux/zdyz-i.mx6ull.html1linux命令1.1fdisk命令1.1.1查看分区fdisk-l显示磁盘分区使用情况1.1.2删除分区fdisk/dev/sdb1用来对sdb1进行分区:输入m表示获取帮助,默认有分区sdb1,然后输入d删除分区1,p打......
  • CF1915D Unnatural Language Processing 题解
    容易发现音节的划分不仅要求子串形如\(\texttt{CV}\)或\(\texttt{CVC}\),并且接下来的两个字符也必须是\(\texttt{CV}\),不然会导致无法划分下去。于是我们遍历字符串,找出所有满足上述条件的子串,记录需要输出\(\texttt{.}\)的位置即可。实现:intn;strings,ans,t="";cin>......