Linux登录后自动健康检查:一键掌握系统状态

news2024/9/21 20:54:00

Linux登录后自动健康检查:一键掌握系统状态


最近开始公众号文章也开始同步更新了,对Java、大数据、人工智能、开发运维相关技术分享,文章对您有用的话,辛苦您也关注下公众号,感谢!


引言

当我们登录到某些服务器时,通常会看到类似于阿里云服务器的欢迎提示:

Welcome to Alibaba Cloud Elastic Compute Service!
[root@2c2g ~]# 

我们可以通过定制登录时的提示信息,在用户登录服务器后,自动展示一些常用的系统健康检查指标。这对于系统运维和监控来说,是一个非常有用的功能。在这篇博客中,我们将探讨如何编写一个简单的Bash脚本,以在用户登录Linux系统后自动检查一些关键的系统指标,并展示这些信息。

脚本的核心功能

我们将实现一个Bash脚本,该脚本在用户登录后自动执行,并检查以下几个关键系统指标:

  1. CPU使用率
  2. 内存使用情况
  3. 磁盘空间使用情况
  4. 当前登录用户
  5. 系统运行时间(uptime)
  6. 网络状态

步骤一:编写检查系统指标的脚本

首先,创建一个Bash脚本文件,例如 check_system_status.sh。在脚本中,我们将使用一些常用的Linux命令来获取系统指标。

#!/bin/bash

echo "-------- System Health Check --------"
echo ""

# CPU使用率
echo -n "CPU Usage: "
mpstat | awk '$12 ~ /[0-9.]+/ { print 100 - $12"%"}'

# 内存使用情况
free -h | awk 'NR==2{printf "Memory Usage: %s/%s (%.2f%%)\n", $3,$2,$3*100/$2 }'

# 磁盘空间使用情况
df -h | awk '$NF=="/"{printf "Disk Usage: %d/%dGB (%s)\n", $3,$2,$5}'

# 当前登录用户
echo "Logged In Users:"
who
echo ""

# 系统运行时间
echo "System Uptime:"
uptime -p
echo ""

# 网络状态
echo "Network Status:"
ifconfig | grep "inet " | awk '{print $2}'
echo ""

echo "-------------------------------------"

脚本解析

  • CPU使用率:使用 mpstat 命令获取CPU的空闲百分比,通过计算得到CPU的使用率。
  • 内存使用情况:使用 free -h 命令,输出当前内存的使用量和总量,并计算使用率。
  • 磁盘空间使用情况:使用 df -h 命令获取根目录的磁盘使用情况。
  • 当前登录用户:使用 who 命令列出当前所有登录用户。
  • 系统运行时间:使用 uptime -p 命令获取系统的运行时间。
  • 网络状态:使用 ifconfiggrep 获取所有网络接口的IP地址。

步骤二:配置脚本在登录时自动执行

为了让脚本在每次用户登录后自动运行,我们可以将其添加到用户的 .bash_profile.bashrc 文件中,也可以将脚本直接放入/etc/profile.d目录下。

方法一:将脚本添加到/etc/profile.d目录

将脚本保存为 /etc/profile.d/check_system_status.sh,并赋予其可执行权限:

sudo chmod +x /etc/profile.d/check_system_status.sh

提示:在 /etc/profile.d 目录下的脚本,会在每个用户登录后自动执行,这适用于希望所有用户都能看到该提示信息的情况。

方法二:将脚本添加到用户的.bashrc文件

如果您希望仅在某个特定用户登录时执行该脚本,可以将以下内容添加到该用户的 .bashrc 文件中:

# 在~/.bashrc末尾添加以下行
if [ -f /path/to/check_system_status.sh ]; then
    /path/to/check_system_status.sh
fi

每次用户登录时,系统会自动运行这个脚本并输出系统指标。

效果展示

当用户登录系统时,将会看到如下输出:

-------- System Health Check --------

CPU Usage: 4.96%
Memory Usage: 1.1G/1.7G (64.71%)
Disk Usage: 11/40GB (27%)
Logged In Users:
root     pts/0        Aug 17 08:14 (116.3.202.212)
root     pts/1        Aug 17 08:17 (116.3.202.212)
root     pts/2        Aug 17 08:23 (116.3.202.212)

System Uptime:
up 1 week, 3 days, 22 hours, 36 minutes

Network Status:
172.25.0.1
172.17.0.1
172.29.117.97
127.0.0.1

-------------------------------------
[root@2c2g ~]# 

结论

通过这个简单的脚本,您可以在每次登录Linux系统后自动检查一些关键的系统指标。这不仅有助于您及时发现系统的潜在问题,还能提高日常运维的效率。您可以根据需要进一步扩展脚本,比如添加更多的检查项,或者将检查结果保存到日志文件中以便日后分析。

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

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

相关文章

rt-thread 打开flashdb若干问题

1、打开FAL和SFUD功能 2、打开FLASHDB时,想用utest测试工程,结果报错,缺少mkdir函数: 解决办法:打开DFS RT-Thread Components → DFS: device virtual file system 重新编译

大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

windows重装系统后无法安装软件,Windows软件无法打开,缺少dll,缺少c++运行库

如果你使用Directx&#xff0c;要么识别不出来&#xff0c;要么装上之后更新会发现重复安装了很多运行库 装一个visual stiudio&#xff1a;<Visual Studio 2022 IDE - 适用于软件开发人员的编程工具> 选择使用C游戏开发、.Net桌面开发 然后安装即可

学习Java的日子 Day71 手写一个SpringMVC的框架(一)

手写一个SpringMVC的框架 1.理解为什么要写这样一个框架 SpringMVC 实际上跟Servlet是一样&#xff0c;都是 Controller的一个解决方案&#xff0c;也就是说我们手写这个框架的目的就是为了替换原来的 Servlet 注意&#xff1a; spring不是框架&#xff0c;springMVC才是框架&…

一文入门mysql 数据库

一、数据库概述 什么是数据库 数据库是一个用于存储和管理数据的仓库。数据按照特定的格式存储&#xff0c;可以对数据库中的数据进行增加、修改、删除和查询操作。数据库的本质是一个文件系统&#xff0c;按照一定的逻辑结构组织数据&#xff0c;以方便高效地访问和维护。 什…

使用Python创建LNK文件选择器并导出配置文件

在这篇博客中&#xff0c;我将介绍如何使用Python的wxPython库开发一个GUI应用程序&#xff0c;该应用程序可以选择文件夹中的.lnk&#xff08;快捷方式&#xff09;文件&#xff0c;并将选中的文件导出为特定格式的buttons.ini配置文件。这个工具非常适合用来快速生成配置文件…

使用Java调用Apache commons-text求解字符串相似性实战

目录 前言 一、字符串距离的几种计算方法 1、Levenshtein 距离 2、Overlap Coefficient计算 3、Q-gram Matching 4、余弦相似性计算 二、基于余弦相似性的基地名称对比 1、加载百科中的基地信息列表 2、设置忽略词列表 3、将数据库地名和Excel进行对比 三、总结 前言…

c语言音频.wav读写示例

1 .wav格式说明 一. RIFF 概念 在 Windows 环境下&#xff0c;大部分的多媒体文件都依循着一种结构来存放信息&#xff0c;这种结构称为"资源互换文件格式"(Resources lnterchange File Format)&#xff0c;简称 RIFF。例如声音的 WAV 文件、视频的 AV1 文件等等均…

EmguCV学习笔记 VB.Net 2.4 Image类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV学习笔记目录 Vb.net EmguCV学习笔记目录 C# 笔者的博客网址&#xff1a;VB.Net-CSDN博客 教程相关说明以及如何获得pdf教…

【图解秒杀系列】秒杀技术点——秒杀按钮点亮、削峰

【图解秒杀系列】秒杀技术点——秒杀按钮点亮、削峰 秒杀按钮点亮涉及的问题以及解决办法处理流程 削峰答题 & 验证码具体流程 排队 秒杀按钮点亮 在秒杀场景中&#xff0c;秒杀商品页面是需要处理按钮点亮的逻辑的。在秒杀未开始前&#xff0c;按钮置灰&#xff0c;不可点…

POSIX信号量semaphore实现线程同步

POSIX标准定义了信号量接口如下&#xff0c;常常用于线程间同步。 #include <semaphore.h>int sem_init(sem_t *sem, int pshared, unsigned int value); int sem_destroy(sem_t *sem); int sem_post(sem_t *sem); int sem_wait(sem_t *sem); sem_init()在sem指向的地址…

微信小程序反编译工具

目录 介绍 工程结构还原 微信开发者工具运行 如何查看当前运行版本? 开启小程序F12 重新打包运行 效果示例 安装 用法 参数说明 获取微信小程序AppID 文件夹名即为AppID 下载地址 介绍 纯Golang实现,一个用于自动化反编译微信小程序的工具,小程序安全利器, 自…

【杂谈】-8个常用的Python图像操作库

8个常用的Python图像操作库 文章目录 8个常用的Python图像操作库1、OpenCV2、Pillow&#xff08;PIL&#xff09;3、Scikit Image4、Numpy5、SciPy6、Mahotas7、SimpleITK8、Matplotlib 在当今世界&#xff0c;数据在每个行业垂直领域中都发挥着至关重要的作用。图像可以是提取…

Redis 操作的原子性及其保证机制

Redis 操作的原子性及其保证机制 1、单命令的原子性2、事务的原子性3、并发操作的考虑4、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Redis 的操作之所以是原子性的&#xff0c;主要得益于其单线程的执行模型。这种模型确保了每个命…

5.9.8 最优化控制初探——PID参数优化

总目录&#xff1a;http://t.csdnimg.cn/YDe8m 5.9.8 最优化控制初探——PID参数优化 之前在“A_2_PID控制转速例程”例程中&#xff0c;PID参数是手动调节的。然而在已经获得系统完整数学模型的情况下&#xff0c;我们可以使用效率更高的方法&#xff0c;即最优化控制。先来看…

Nios II新建项目

1.Nios II Application and BSP form Template BSP:board support package&#xff08;板级支持包&#xff09; 2.Nios II Sotware Examples SOPC Information File name:选择项目文件夹下的 .sopcinfo 文件 Project name:自定义名称 Project location:Use default locatio…

删除镜像报容器依赖错误

1、删除镜像报容器依赖错误 出现这个错误的原因是因为5303b5323a4c容器使用了此镜像。解决&#xff1a;先停止容器、删除容器、之后再镜像即可。 2、查看镜像对应的容器 # docker ps -a | grep 611a37aa5ffc 3、先停止容器 # docker stop 5303b5323a4c 4、删除容器 # do…

Spring Boot: 2.7.x 至 2.7.18 及更旧的版本,漏洞说明

本文提供的修复指南将帮助开发者有效规避 CVE-2024-38808 和 CVE-2024-38809 的风险。如果你正在使用老版本的 Spring Boot&#xff0c;请尽快参考本文进行修复与升级。 此漏洞来源于spring官网&#xff1a;https://spring.io/blog/2024/08/14/spring-framework-releases-fixe…

flink车联网项目前篇:业务实现1(第67天)

系列文章目录 业务实现 3.1 创建catalog 3.1.1 vvp 3.1.2 mysqlcdc 3.1.2.1 使用限制 3.1.2.2 配置MySQL Catalog 3.1.3 xxxxpm 3.1.3.1 下载Paimon插件 3.1.3.2 在MaxCompute项目中上传Paimon插件 3.1.3.3 创建自定义Catalog类型 3.1.3.5 配置catalog 3.1.4 xxxxx 3.1.4.1 背…

Linux设置yum源为阿里云镜像源

一、验证网络是否可以连接阿里云镜像 #验证网络是否可以连接阿里云镜像 ping mirrors.aliyun.com如果ping不通&#xff0c;则找一台可以连接外网的电脑&#xff0c;ping一下mirrors.aliyun.com&#xff0c;找到mirrors.aliyun.com对应的ip。 二、 手动配置 #删除原yum源 rm -…