通过 MOTD (Message of the Day) 实现每次登录 VPS 自动展示系统占用信息
— ghostart
创建文件
/etc/update-motd.d/ 中的文件,名称开头的数字决定了其执行顺序(数字越小越先执行)。
我们把它命名为 98-sysinfo,让它在大部分系统默认信息之后显示。
vim /etc/update-motd.d/98-sysinfo或者(如果你是新手的话):
nano /etc/update-motd.d/98-sysinfo粘贴以下内容:
#!/bin/bash
echo "==============================================================="
echo " 系统状态概览"
echo "==============================================================="
# --- 1. 系统负载 ---
core_count=$(nproc 2>/dev/null || echo 1)
load_info=$(cut -f1-3 -d' ' /proc/loadavg)
load_percent=$(awk -v core="$core_count" '{printf "%.0f", ($1 / core) * 100}' /proc/loadavg)
echo " > 系统已运行: $(uptime -p | sed 's/^up //')"
echo " > 系统负载: $load_info (1/5/15 min)"
echo " > 负载评估: ${load_percent}% (基于 $core_count 核心 CPU)"
# --- 2. 内存使用 ---
# 单位: kB
mem_total_kb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
mem_avail_kb=$(grep MemAvailable /proc/meminfo | awk '{print $2}')
# 计算真实已用 (Total - Available)
mem_used_kb=$((mem_total_kb - mem_avail_kb))
# 转换为 MB 显示
mem_total_mb=$((mem_total_kb / 1024))
mem_used_mb=$((mem_used_kb / 1024))
mem_avail_mb=$((mem_avail_kb / 1024))
# 计算百分比
mem_percent=$(awk -v used="$mem_used_kb" -v total="$mem_total_kb" 'BEGIN { printf "%.1f", (used / total) * 100 }')
# 合并显示: 已用 / 总量 (百分比, 剩余)
echo " > 内存占用: ${mem_used_mb}MB / ${mem_total_mb}MB (${mem_percent}% 已用, 剩余: ${mem_avail_mb}MB)"
# --- 3. 磁盘使用 ---
disk_root=$(df -h / | awk 'NR==2 {printf "%s / %s (%s)", $3, $2, $5}')
echo " > 磁盘 (Root): $disk_root"
echo "==============================================================="如果你使用 nano 编辑,按 Ctrl + X 之后输入 Y 最后回车
赋予权限
sudo chmod +x /etc/update-motd.d/98-sysinfo测试
断开之后重新连接即可看到效果(适用于 Ubuntu 和 Debian 系统)

sudo run-parts /etc/update-motd.d/