当前位置: 首页 > news >正文

收集系统资源使用情况

需求

某公司的 Linux 运维工程师,负责维护生产环境 CentOS7 服务器。

现需要对系统定义以下定时任务:

每小时更新一次mlocate数据库和mandb数据库

每分钟收集一次系统资源使用情况,收集的结果保存到/var/log/system_load.log。

收集的资源使用情况包括:

  • CPU 使用率
  • 内存 使用率
  • 存储 使用率
  • 系统中运行的进程,需包含进程号、父进程号、CPU、内存使用率属性,并根据CPU使用率降序排序

实现过程

  1. 新建脚本文件
#1. 新建脚本文件
[root@server ~]# vim /usr/local/bin/system_resource_collect.sh
  1. 脚本内容(整合所有收集逻辑,加执行权限)
#!/bin/bash
# 日志文件路径
LOG_FILE="/var/log/system_load.log"
# 追加时间戳
echo "=====$(date '+%Y-%m-%d %H:%M:%S')====" >> $LOG_FILE
# CPU使用率
top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print "CPU Usage: " 100 - $1 " %"}' >> $LOG_FILE
# 内存使用率
free -m | awk 'NR==2{printf "Memory Usage: %.2f%%\n", $3*100/$2 }' >> $LOG_FILE
# 存储使用率(根目录)
df -h / | awk 'NR==2{printf "Storage Usage: %s\n", $5}' >> $LOG_FILE
# 进程信息(PID/PPID/%CPU/%MEM,按CPU降序)
echo "Process List (PID, PPID, %CPU, %MEM):" >> $LOG_FILE
ps -eo pid,ppid,%cpu,%mem,command --sort=-%cpu >> $LOG_FILE
# 空行分隔每次收集结果
echo "" >> $LOG_FILE
  1. 给脚本加执行权限
[root@server ~]# chmod +x /usr/local/bin/system_resource_collect.sh
  1. 配置crontab

    [root@server ~]# crontab -e
    # 每小时更新mlocate和mandb数据库
    0 * * * * /usr/bin/updatedb && /usr/bin/mandb# 每分钟执行脚本,收集资源
    * * * * * /usr/local/bin/system_resource_collect.sh[root@server ~]# crontab -l
    # 每小时更新mlocate和mandb数据库
    0 * * * * /usr/bin/updatedb && /usr/bin/mandb# 每分钟执行脚本,收集资源
    * * * * * /usr/local/bin/system_resource_collect.sh

    或者在/etc/cron.d下增加文件1update、2minute,配置执行的脚本(系统级别的任务优先配置在cron.d目录下

    每小时执行的脚本也可以直接配置在原有的0hourly文件中

    [root@server cron.d]# cat 1update 
    # Run the upate jobs
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    #01 * * * * root run-parts /etc/cron.hourly
    0 * * * * root /usr/bin/updatedb && /usr/bin/mandb[root@server cron.d]# cat 2minute 
    # Run the minutely jobs
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    #01 * * * * root run-parts /etc/cron.hourly
    * * * * * root /usr/local/bin/system_resource_collect.sh
    
  2. 验证

    # 重启服务
    [root@server ~]# systemctl restart crond 
    [root@server ~]# systemctl status crond # 查看日志
    [root@server ~]# tail -f /var/log/system_load.log1202   1200  0.0  0.2
    …………=====2025-11-11 22:11:01====
    CPU Usage: 0 %
    Memory Usage: 12.14%
    Storage Usage: 4%
    Process List (PID, PPID, %CPU, %MEM):PID   PPID %CPU %MEM1      0  0.2  0.32      0  0.0  0.04      2  0.0  0.05      2  0.0  0.06      2  0.0  0.0
    …………#执行md5sum /dev/zero &,top查看cpu占用,同时查看日志[root@server ~]# tail -f /var/log/system_load.log
    =====2025-11-11 22:15:01====
    CPU Usage: 100 %
    Memory Usage: 12.55%
    Storage Usage: 4%
    Process List (PID, PPID, %CPU, %MEM):PID   PPID %CPU %MEM1346   1202 99.4  0.01      0  0.1  0.31348    930  0.1  0.52      0  0.0  0.04      2  0.0  0.05      2  0.0  0.06      2  0.0  0.07      2  0.0  0.08      2  0.0  0.09      2  0.0  0.010      2  0.0  0.011      2  0.0  0.0

    脚本补充command后任务执行

=====2025-11-12 20:04:01====
CPU Usage: 6.2 %
Memory Usage: 6.92%
Storage Usage: 4%
Process List (PID, PPID, %CPU, %MEM, COMMAND):PID   PPID %CPU %MEM COMMAND673      1  0.1  0.2 /usr/bin/vmtoolsd9830      2  0.1  0.0 [kworker/0:1]9912    961  0.1  0.2 sshd: root@pts/21      0  0.0  0.2 /usr/lib/systemd/systemd --switched-root --system --deserialize 222      0  0.0  0.0 [kthreadd]4      2  0.0  0.0 [kworker/0:0H]6      2  0.0  0.0 [ksoftirqd/0]7      2  0.0  0.0 [migration/0]8      2  0.0  0.0 [rcu_bh]9      2  0.0  0.0 [rcu_sched]10      2  0.0  0.0 [lru-add-drain]11      2  0.0  0.0 [watchdog/0]
http://www.dtcms.com/a/601616.html

相关文章:

  • 100v转12v芯片,100V转-12V负压方案AH7691D
  • 没有网站怎么做cpa赚钱网站设计论文的参考文献
  • Docker 部署 MySQL 5.7
  • 【图像处理基石】如何对图像畸变进行校正?
  • Step by Step Configuration Of DataGuard Broker for Oracle 19C
  • 阿里云服务器网站备案工程造价材料信息网
  • 做底单的网站wordpress oauth
  • mkcert 自签证书以及 jssip
  • 新出土的古陶瓷碎片的图片并根据碎口尝试进行拼接用什么模型算法比较合适?古陶瓷碎片拼接算法选型
  • 网站建设人员需求化妆品网站的建设方案
  • Flink原理与实战(java版)#第2章 Flink的入门(第一节大数据架构的演变)
  • Python好玩的算法库
  • 银河麒麟V10下使用virt-manager安装Windows虚拟机
  • 插值——牛顿插值
  • 【稳定性】system_app_anr@1760693457221.txt和anr_2025-10-17-17-30-35-009有什么区别
  • 网站建设 教材 推荐免费网站提供
  • Java ee初阶——定时器
  • 【JavaEE初阶】网络层-IP协议
  • tomcat/idea打包部署报错,RUN 可以 DEBUG 不行
  • 地方网站还有得做吗永嘉做网站
  • 防滑齿位置与牙根断裂风险的相关性分析
  • Lua学习记录(1) --- Lua中的条件分支语句和循环语句
  • 铸铁实验平台概述
  • 微电网的“智能大脑”:ACCU-100M如何实现光储充一体化协调控制?
  • 算法 day 52
  • seo优化排名易下拉试验2022年seo还值得做吗
  • (Mysql)MySQL 查询执行顺序总结
  • Plaxis自动化建模与Python应用全解:从环境搭建到高级案例实战
  • 网络推广网站排名免费的行情软件网站不用下载
  • 建设网站困难的解决办法推荐营销型网站建设