一个脚本搞定Ubuntu\Rocky登录后自动展示 CPU/内存/多盘使用情况

登录Linux服务器后,自动展示平时关注的系统信息,一目了然。
1、效果展示

2、脚本内容
vi /etc/profile.d/sysinfo.sh

#!/usr/bin/env bash

# ================== Colors ==================
GREEN="\033[1;32m"
YELLOW="\033[1;33m"
CYAN="\033[1;36m"
RESET="\033[0m"

# ================== Separator ==================
LINE_LEN=60
LINE=$(printf '%*s' "$LINE_LEN" '' | tr ' ' '-')

# ================== OS & Kernel ==================
if [ -f /etc/os-release ]; then
    OS_NAME=$(awk -F= '/^PRETTY_NAME/ {gsub(/"/,""); print $2}' /etc/os-release)
else
    OS_NAME=$(uname -s)
fi

KERNEL_VER=$(uname -r)

# ================== Basic Info ==================
HOSTNAME=$(hostname)

UPTIME=$(uptime -p 2>/dev/null | sed 's/^up //')
[ -z "$UPTIME" ] && UPTIME=$(uptime | awk -F',' '{print $1}')

LOADAVG=$(awk '{print $1", "$2", "$3}' /proc/loadavg)

# ================== Memory ==================
read MEM_TOTAL MEM_USED <<<$(free -m | awk '/^Mem:/ {print $2, $3}')
MEM_PCT=$(( MEM_USED * 100 / MEM_TOTAL ))

# ================== IP Address ==================
IP_ADDR=$(hostname -I 2>/dev/null | awk '{print $1}')
IP_ADDR=${IP_ADDR:-"N/A"}

# ================== CPU Usage (top, fast) ==================
CPU_IDLE=$(top -bn1 2>/dev/null \
  | grep -E "Cpu\(s\)|%Cpu\(s\)" \
  | sed 's/,/\n/g' \
  | awk '/id/ {print $1}')

CPU_USAGE=$(awk "BEGIN {printf \"%.0f\", 100 - $CPU_IDLE}")

# ================== Output ==================
echo -e "\n${GREEN}Welcome, system information overview (系统信息概览)${RESET}"
echo -e "${YELLOW}${LINE}${RESET}"

printf "| %-16s | %-38s |\n" "Resource (资源)" "Status (使用情况)"
printf "|------------------|----------------------------------------|\n"
printf "| %-16s | %-38s |\n" "Hostname" "$HOSTNAME"
printf "| %-16s | %-38s |\n" "OS Version" "$OS_NAME"
printf "| %-16s | %-38s |\n" "Kernel Version" "$KERNEL_VER"
printf "| %-16s | %-38s |\n" "IP Address" "$IP_ADDR"
printf "| %-16s | %-38s |\n" "CPU Usage" "${CPU_USAGE}%"
printf "| %-16s | %-38s |\n" "Memory" "${MEM_USED}MB / ${MEM_TOTAL}MB (${MEM_PCT}%)"
printf "| %-16s | %-38s |\n" "Load Average" "$LOADAVG"
printf "| %-16s | %-38s |\n" "Uptime" "$UPTIME"

echo -e "${YELLOW}${LINE}${RESET}"
echo -e "${CYAN}Disk Usage (磁盘使用情况)${RESET}"
echo -e "${YELLOW}${LINE}${RESET}"

printf "| %-20s | %-10s | %-10s | %-6s |\n" \
       "Mount Point" "Used" "Total" "Use%"
printf "|----------------------|------------|------------|--------|\n"

df -h -x tmpfs -x devtmpfs | awk 'NR>1 {
    printf "| %-20s | %-10s | %-10s | %-6s |\n", $6, $3, $2, $5
}'

echo -e "${YELLOW}${LINE}${RESET}"
echo -e "${GREEN}Operate carefully. (谨慎操作)${RESET}\n"

评论已关闭。