虽然可以通过手动执行 top、free、df、systemctl status 等命令逐一查看,但效率较低,尤其在管理多台服务器时体验更差。
为此,我整理并优化了一个轻量级的 登录欢迎脚本(system-info.sh),部署后可在每次用户登录时自动显示关键系统信息,帮助运维人员快速掌握服务器状态。
该脚本已在 CentOS 7/8、Rocky Linux、Ubuntu 等主流发行版上验证可用,无额外依赖,安全可靠。
脚本功能一览
部署方法(三步完成)
1. 创建脚本文件以 root 用户登录服务器,创建脚本:
sudo vi /etc/profile.d/system-info.sh将以下内容粘贴保存:
#!/bin/bash## 脚本名称:system-info.sh# 小柳实验室 xlsys.cn# 功能:用户登录时显示系统概览信息# 你可加入更多你需查询内容展示的!# 适用系统:CentOS/RHEL/Ubuntu 等支持 /etc/profile.d 的 Linux 发行版# 获取内核版本welcome=$(uname -r)# 内存memory_total=$(free -m | awk '/Mem:/ { printf($2)}')if [ $memory_total -gt 0 ]; then memory_usage=$(free -m | awk '/Mem:/ { printf("%3.1f%%", $3/$2*100)}')else memory_usage=0.0%fi# 交换内存swap_total=$(free -m | awk '/Swap:/ { printf($2)}')if [ $swap_total -gt 0 ]; then swap_mem=$(free -m | awk '/Swap:/ { printf("%3.1f%%", $3/$2*100)}')else swap_mem=0.0%fi# 磁盘使用情况usageof=$(df -h / | awk '/// {print $(NF-1)}')# 系统负载load_average=$(awk '{print $1}' /proc/loadavg)# 当前用户whoiam=$(whoami)# 时间time_cur=$(date)# 进程数processes=$(ps aux | wc -l)# 在线用户数user_num=$(users | wc -w)# IP地址ip_pre=$(/sbin/ip a|grep inet|grep -v 127.0.0.1|grep -v inet6 | awk '{print $2}' | head -1)ip_address=${ip_pre%/*}# 检查中间件安装情况nginx_process=$(ps aux | grep -v grep | grep nginx)java_process=$(ps aux | grep -v grep | grep java)mysql_process=$(ps aux | grep -v grep | grep mysql)redis_process=$(ps aux | grep -v grep | grep redis-server)# 输出格式bold=$(tput bold)normal=$(tput sgr0)yellow=$(tput setaf 3)echo -e "n"echo -e "${bold}欢迎访问 小柳实验室 系统版本$welcome${normal}n"echo -e "系统信息(当前时间:${bold}$time_cur${normal})n"echo -e "系统负载:t${yellow}$load_average${normal}"echo -e "进程数:t$processes"echo -e "内存使用:t$memory_usage"echo -e "交换内存使用:t$swap_mem"echo -e "磁盘使用:t$usageof"echo -e "IP地址:t$ip_address"echo -e "在线用户数:t$user_num"echo -e "${yellow}${bold}作者:小柳实验室t www.xlsys.cn${normal}n"echo -e "中间件安装情况:n"if [ -n "$nginx_process" ]; then echo -e "Nginx:tt已安装"else echo -e "Nginx:tt未发现"fijava_count=$(ps aux | grep -v grep | grep -c java)if [ $java_count -gt 0 ]; then echo -e "Java:tt已安装(进程数:$java_count)"else echo -e "Java:tt未发现"fiif [ -n "$mysql_process" ]; then echo -e "MySQL:tt已安装"else echo -e "MySQL:tt未发现"fiif [ -n "$redis_process" ]; then echo -e "Redis:tt已安装"else echo -e "Redis:tt未发现"fiif [ "$whoiam" == "root" ]; then echo -e "n"else echo -e "要以管理员身份运行命令(用户${bold}root${normal}),请使用${bold}sudo <command>${normal}。"fi2. 添加执行权限
sudo chmod +x /etc/profile.d/system-info.sh注意:/etc/profile.d/ 下的脚本必须具有可执行权限才会被 shell 加载。
3. 重新登录生效退出当前会话并重新 SSH 登录,即可看到效果。
写在最后:
这个脚本虽小,却能在日常运维中节省大量重复查询的时间。尤其在排查问题或交接服务器时,一眼看清系统状态,效率显著提升。
📬 关注我
推荐阅读
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...