Linux 监控
监控管理必然是需要看到linux 系统的现在存在有多少进程。 那么和proc 这个文件打交道也是必然的。
-
proc 目录介绍
GUN/Liunx 系统中 /proc 目录 是位于内存中的伪文件系统。 该目录下保存的不是真正的文件系统和目录,而是一些运行时的一些信息。 通过与之对应的 pid ,找到对应文件名称。还有一些事系统的
同时可以通过cat\more \less 来查看一些系统信息 如 cat /proc/cpuinfo、 为cpu 信息参数 cat /proc/cmdline 系统的启动参数。
#!/bin/sh
#操作系统启动参数
cat /proc/cmdline
#cpu 系统信息
cat /proc/cpuinfo
# 物理内存的镜像
cat /proc/kcore
# 系统负载的平均值,前三列分代表 最近1分钟、5分钟、15分钟
cat /proc/loadavg
# 一般有free 命令统计当前内存使用信息可以使用文件查看
cat /proc/meminfo
# 磁盘设备的磁盘I/O 统计信息列表
cat /proc/diskstats
# 网络流入流出的统计数量、包括收发包的数量
cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
eth0: 258663414550 494895031 0 0 0 0 0 0 223986048501 423614357 0 0 0 0 0 0
veth34aa1d7: 23926071533 34294044 0 0 0 0 0 0 30009475229 33798617 0 0 0 0 0 0
lo: 89769734360 405242781 0 0 0 0 0 0 89769734360 405242781 0 0 0 0 0 0
docker0: 24042786168 36791796 0 0 0 0 0 0 31063206258 36258181 0 0 0 0 0 0
# 查看当前系统支持的文件系统
cat /proc/filesystems
# 系统已经加载的所有块设备和字符设备的信息
cat /proc/devices
# 块设备分区的主设备号 和次设备号
cat /proc/partitions
# 当前系统虚拟内存的统计数据
cat /proc/vmstat
# 当前系统运行的内核版本号
cat /proc/version
# 系统上次启动以来的时间
cat /proc/uptime
- 进程目录下的文件
- cwd:cwd 是一个软链接,指向项目运行目录
- exe:exe 软链接,指向进程的可执行文件
- environ:包括与进程相关的环境变量
- fd: 包含了进程打开的每一个文件描述符,这些文件描述符是指向实际文件的一个符号链接。
- limits: 保存进程使用资源的限制信息,包括软限制、硬限制已经取值单位。
- task: 包含了当前进程所运行的每一个线程相关信息,每一个线程的相关信息文件均保存在一个线程号的目录下。
使用脚本监控Linux
#!/bin/bash
cpu_idle = $(top -n2 | grep 'Cpu' | tail -n 1 | awk '{ print $8}')
cpu_usage = $(echo "100 - $cpu_idle" | bc) # cpu 利用率
mem_free = $(free -h | awk '/Mem:/ {print $4 + $6 +$7}')# 内存剩余
mem_total = $(free -h | awk '/Mem:/ {print $2}')# 内存总量
mem_used = $(echo "$mem_total - $mem_free") # 内存使用量
mem_rate = $(echo "$mem_used * 100 / mem_total" | bc) # 内存使用率 bc 用于计算
disk_usage = $(df -h / | tail -n 1 | awk '{print $5 }')# 磁盘使用率
disk_size = $(df -h / | tail -n 1 |awk '{print $2}') # 磁盘大小
disk_use = $(df -h / | tail -n 1 |awk '{print $3}') # 磁盘使用大小
echo "cpu 利用率 : $cpu_usage %"
echo "内存剩余 : $mem_free M"
echo "内存总量 : $mem_total %"
echo "内存使用量 : $mem_used %"
echo "内存使用率 : $mem_rate %"
echo "磁盘使用率 : $disk_usage %"
echo "磁盘大小 : $disk_size "
echo "磁盘使用大小 : $disk_use"