如操作系统的心跳,运行状况无可逃避:Shell脚本揭示系统鲜活秘密!

news2025/1/12 21:38:35

简介

Ubuntu 系统保姆监控脚本,全自动化解读系统运行状态!脚本轻量化、资源节约,并且能够定期检测硬盘容量、内存占用和缓存情况。一旦发现缓存占用过高,即刻自动清理缓存,并将结果写入指定目录的日志文件中。日志文件大小限制在10M以内,最多保留7个日志文件。咱就是为了你的Ubuntu系统安宁而设计!

脚本编写

#!/bin/bash

# 设置日志目录
log_dir="/path/to/log/directory"

# 检查日志目录是否存在,不存在则创建
if [ ! -d "$log_dir" ]; then
    mkdir -p "$log_dir"
fi

# 设置日志文件
log_file="$log_dir/system_monitor.log"

# 检查日志文件大小,如果超过10M,则备份并清空
if [ -f "$log_file" ] && [ $(du -m "$log_file" | cut -f1) -gt 10 ]; then
    mv "$log_file" "$log_dir/system_monitor_$(date +'%Y%m%d%H%M%S').log"
fi

# 最多保留7个日志文件
log_count=$(ls -1 "$log_dir" | grep "system_monitor_" | wc -l)
if [ $log_count -gt 7 ]; then
    oldest_log=$(ls -1t "$log_dir" | grep "system_monitor_" | tail -n 1)
    rm "$log_dir/$oldest_log"
fi

# 获取系统运行状态信息
uptime_info=$(uptime)
disk_usage=$(df -h)
memory_usage=$(free -h)
cache_usage=$(sync && echo 3 | tee /proc/sys/vm/drop_caches && free -m | grep -i buffers/cache | awk '{print $3}')

# 将信息写入日志文件
echo "========== $(date +'%Y-%m-%d %H:%M:%S') ==========" >> "$log_file"
echo "Uptime: $uptime_info" >> "$log_file"
echo -e "\nDisk Usage:\n$disk_usage" >> "$log_file"
echo -e "\nMemory Usage:\n$memory_usage" >> "$log_file"
echo -e "\nCache Usage before clearing: $cache_usage MB" >> "$log_file"

# 如果缓存占用过高,清空缓存
if [ $cache_usage -gt 100 ]; then
    sync && echo 3 | tee /proc/sys/vm/drop_caches
    echo -e "\nCache Cleared!" >> "$log_file"
fi

# 获取清空缓存后的缓存占用
cache_usage_after_clear=$(free -m | grep -i buffers/cache | awk '{print $3}')
echo -e "\nCache Usage after clearing: $cache_usage_after_clear MB" >> "$log_file"

echo -e "\n=============================================" >> "$log_file"

# 输出结果到控制台
cat "$log_file"

请替换脚本中的/path/to/log/directory为你想要保存日志的实际目录。这个脚本将监控系统运行状态,记录在日志文件中,并在缓存占用过高时清空缓存。脚本会定期清理日志文件,保留最多7个日志,每个日志文件的大小不超过10M。
运行脚本
在这里插入图片描述

定时任务

crontab -e
0 3 * * 1 /path/to/your/test.sh

这个cron表达式的含义是:
0: 分钟部分,表示每小时的第0分钟。
3: 小时部分,表示每天的第3小时。
*: 日期部分,表示每天。
*: 月份部分,表示每月。
1: 星期部分,表示每周的星期一。
保存并退出编辑器。
这样,脚本将每周的星期一早上3点运行一次。请确保将/path/to/your/test.sh替换为你实际脚本的路径。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1401501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙开发-UI-布局-相对布局

鸿蒙开发-UI-布局 鸿蒙开发-UI-布局-线性布局 鸿蒙开发-UI-布局-层叠布局 鸿蒙开发-UI-布局-弹性布局 文章目录 前言 一、基本概念 二、设置依赖 1.锚点设置 2.设置相对于锚点的对齐位置 三、使用场景 总结 前言 上文详细学习常见布局方式-弹性布局,学习弹性布局容…

知识图谱KG+大模型LLM

LLM-based KG KnowLM OpenSPGKG-based RAG 基本原理 从query出发的语义解析 pre-LLM方法 思想:直接将问题解析为对应的逻辑表达式,然后到知识图谱中查询。 方法:通常包含逻辑表达式、语义解析算法、语义解析模型训练三部分。一般步骤是将问句…

NODE介绍和环境安装

浏览器是JS的前端运行环境 Node.js是JS的后端运行环境 Node.js中无法调用DOM和BOM等浏览器内置API 基于Express框架,快速构建web应用 基于Electron框架,构建跨平台桌面应用 基于restify框架快速构建API接口项目 读写数据库 下载Node.js环境 网址&…

linux下的nginx相关配置练习

1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为 welcome to openlab!!! [rootlocalhost ~]# systemctl stop firewalld.service #关闭防火墙 [rootlocalhost ~]# setenforce 0 #关闭selinux [rootlocalhost www]# vim /etc/nginx/conf.d/test_ope…

python 之 指定小数的输出

文章目录 **使用 round() 函数:****使用字符串格式化:****使用f-字符串:****使用 decimal 模块:** 在Python中,可以使用不同的方法来指定浮点数的小数位数。以下是其中一些常见的方式: 使用 round() 函数&…

mapboxGL中的航线动画

概述 借用上篇文章中二阶贝塞尔曲线的生成,本文实现mapboxGL中的航线动画。 效果 实现 1. 初始化地图 const from [101.797439042302, 36.5937248286007]; const to [106.9733, 35.217]; const points new ArcLine(from, to); const line new Geometry(poin…

【Qt】—— Qt的基本介绍

目录 (一)什么是Qt (二) Qt的发展史 (三)Qt⽀持的平台 (四) Qt版本 (五)Qt的优点 (六)Qt的应⽤场景 (七&#xff09…

tag 标签

tag 标签 在使用 Git 版本控制的过程中,会产生大量的版本。如果我们想对某些重要版本进行记录,就可以给仓库历史中的某一个commit 打上标签,用于标识。 在本章中,我们将会学习如何列出已有的标签、如何创建和删除新的标签、以及…

Windows使用wsl2安装docker教程

windows环境搭建专栏🔗点击跳转 win系统环境搭建(十一)——Windows安装docker 文章目录 win系统环境搭建(十一)——Windows安装docker1.搭建WSL2环境1.1 docker官网对环境要求的描述[System requirements](https://do…

JavaScript 学习笔记(WEB APIs Day3)

「写在前面」 本文为 b 站黑马程序员 pink 老师 JavaScript 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。推荐先按顺序阅读往期内容: 1. JavaScript 学习笔记(Day1) 2. JavaSc…

云服务器定价_云服务器价格_云主机计费模式_腾讯云

腾讯云服务器租用价格表:轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年,540元三年、2核4G5M带宽218元一年,2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月,云服务器CVM S5实例2核2G配置280.8元一年…

Mysql运维篇(二) 主从复制

一路走来,所有遇到的人,帮助过我的、伤害过我的都是朋友,没有一个是敌人,如有侵权请留言,我及时删除。 一、主从复制的原理 主库会生成一个I/O操作线程进去写的的操作,而从库则生成两个线程,其…

08. 面向对象编程(二)

目录 1、前言 2、多重继承 2.1、潜在的问题 3、Property 4、staticmethod 5、运算符重载 5.1、加法运算符 的重载 5.2、字符串表示运算符 str() 的重载 5.3、索引运算符 [] 的重载 6、小结 1、前言 上一篇文章中,我们介绍了面向对象编程的类和实例&…

安规电容的知识

1、常见安规电容有哪些? 一般我们所说的安规电容也就有两种,一种就是X安规电容(X1/X2/X3安规电容),还有一种是Y电容(最常见的是Y1和Y2安规电容)。 2、x电容的位置 火线零线间的是X电容。x电容用…

保证缓存一致性的常用套路

缓存更新的套路 看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查…

傲梅轻松备份-备份rocky9,并还原备份

傲梅分区助手磁盘备份功能免费;备份iso镜像不支持linux,好像只能备份window;且备份镜像收费功能,永久授权99; 概述: 1)新建备份U盘 2)新建虚拟机,配置虚拟机&#xff…

C++将信息输入到文件内

第一步检查文件是否打开&#xff0c;用到头文件&#xff1a; #include <fstream> #include <sstream> 文件打开的函数为 file.isopen() 信息输入到文件应该为 file << "" << value; 注意是file<< 如图 定义file ofstream f…

Dell戴尔XPS 8930笔记本电脑原装Win10系统 恢复出厂预装OEM系统

链接&#xff1a;https://pan.baidu.com/s/1eaTQeX-LnPJwWt3fBJD8lg?pwdajy2 提取码&#xff1a;ajy2 原厂系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、系统属性专属LOGO标志、Office办公软件、MyDell等预装程序 文件格式&#xff1a;esd/wim/swm 安装方式&am…

FFT加窗和频谱泄露

所谓加窗&#xff0c;目的就是针对非整周期采样得到的非自窗信号&#xff08;self-windowing signal&#xff09;&#xff0c;缓解其频谱分析结果中的能量泄漏现象&#xff08;注意是“缓解”&#xff0c;而不是“避免”或“消除”&#xff09;。所谓信号整周期采样&#xff08…

一个非常流行的R语言调色板:RColorBrewer

R 语言有许多非常优秀的调色板&#xff0c;本文就介绍一个非常流行的&#xff0c;我也经常在用的调色板 R 包&#xff1a;RColorBrewer。 安装 install.packages("RColorBrewer") 加载 library(RColorBrewer) library(knitr) 初探 ?RColorBrewer 在帮助页面可以看到…