Linux登录后自动健康检查:一键掌握系统状态
最近开始公众号文章也开始同步更新了,对Java、大数据、人工智能、开发运维相关技术分享,文章对您有用的话,辛苦您也关注下公众号,感谢!
引言
当我们登录到某些服务器时,通常会看到类似于阿里云服务器的欢迎提示:
Welcome to Alibaba Cloud Elastic Compute Service!
[root@2c2g ~]#
我们可以通过定制登录时的提示信息,在用户登录服务器后,自动展示一些常用的系统健康检查指标。这对于系统运维和监控来说,是一个非常有用的功能。在这篇博客中,我们将探讨如何编写一个简单的Bash脚本,以在用户登录Linux系统后自动检查一些关键的系统指标,并展示这些信息。
脚本的核心功能
我们将实现一个Bash脚本,该脚本在用户登录后自动执行,并检查以下几个关键系统指标:
- CPU使用率
- 内存使用情况
- 磁盘空间使用情况
- 当前登录用户
- 系统运行时间(uptime)
- 网络状态
步骤一:编写检查系统指标的脚本
首先,创建一个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
命令获取系统的运行时间。 - 网络状态:使用
ifconfig
和grep
获取所有网络接口的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系统后自动检查一些关键的系统指标。这不仅有助于您及时发现系统的潜在问题,还能提高日常运维的效率。您可以根据需要进一步扩展脚本,比如添加更多的检查项,或者将检查结果保存到日志文件中以便日后分析。