在服务器运维中使用 juzi 命令实时获取系统状态
在服务器运维中,实时获取系统状态和信息是必不可少的。本文将介绍一个名为 juzi
的命令,提供多个功能来查看服务器的状态信息,包括 CPU、内存、磁盘使用情况、网络连接、系统负载等。
1. juzi
脚本代码
将以下代码保存到 juzi
文件中,然后将它移动到服务器的 /usr/local/bin/
目录下并赋予执行权限。
#!/bin/bash
VERSION="Stable1.0.1"
GREEN="\033[1;32m"
BLUE="\033[1;34m"
RED="\033[1;31m"
RESET="\033[0m"
divider() {
echo -e "${BLUE}=====================================${RESET}"
}
show_load_history() {
echo -e "\n${BLUE}系统负载历史 (过去一小时):${RESET}"
uptime
}
show_process_info() {
echo -e "\n${BLUE}当前运行的进程信息:${RESET}"
ps aux --sort=-%mem | head -n 10 | awk '{print "用户: " $1 ", 进程ID: " $2 ", 内存使用: " $4 "%, CPU使用: " $3 "%, 命令: " $11}'
}
show_network_connections() {
echo -e "\n${BLUE}当前活动的网络连接:${RESET}"
ss -tunlp | awk '{print "协议: " $1 ", 本地地址: " $5 ", 远程地址: " $6 ", 状态: " $4}' | grep -v '^State'
}
show_disk_usage() {
echo -e "\n${BLUE}各挂载点磁盘使用情况:${RESET}"
df -h | awk 'NR>1 {print "挂载点: "$1", 总容量: "$2", 已用: "$3", 可用: "$4", 使用率: "$5}'
}
show_temperature() {
if command -v sensors &> /dev/null; then
echo -e "\n${BLUE}CPU 温度:${RESET}"
sensors | grep 'Core 0' | awk '{print "温度: " $3}'
else
echo -e "${RED}未安装 lm_sensors,请使用 'sudo dnf install lm_sensors' 安装。${RESET}"
fi
}
show_system_logs() {
echo -e "\n${BLUE}系统日志 (最后 10 行):${RESET}"
tail -n 10 /var/log/messages
}
show_logged_in_users() {
echo -e "\n${BLUE}当前登录的用户:${RESET}"
who | awk '{print "用户名: " $1 ", 登录时间: " $3" "$4", 终端: " $2}'
}
case "$1" in
version)
echo -e "${GREEN}当前版本:$VERSION${RESET}"
;;
process)
show_process_info
;;
network)
show_network_connections
;;
disk)
show_disk_usage
;;
temperature)
show_temperature
;;
logs)
show_system_logs
;;
users)
show_logged_in_users
;;
*)
divider
echo -e "${GREEN}=== 服务器状态 ===${RESET}"
divider
echo -e "${BLUE}CPU 信息:${RESET}"
lscpu | grep 'Model name'
echo -e "\n${BLUE}CPU 使用率:${RESET}"
top -bn1 | grep "Cpu(s)" | awk '{print "使用率: " $2 + $4 "%"}'
echo -e "\n${BLUE}内存使用情况:${RESET}"
free -h | awk '/Mem:/ {print "总内存: "$2, "已用: "$3, "空闲: "$4}'
echo -e "\n${BLUE}硬盘使用情况:${RESET}"
df -h --total | awk '/total/ {print "总容量: "$2, "已用: "$3, "可用: "$4, "使用率: "$5}'
echo -e "\n${BLUE}系统负载:${RESET}"
uptime | awk -F'load average:' '{print $2}'
echo -e "\n${BLUE}系统运行时间:${RESET}"
uptime -p
echo -e "\n${BLUE}网络信息:${RESET}"
ip a | grep 'inet ' | awk '{print "IP 地址: " $2}' | grep -v '127.0.0.1'
echo -e "\n${BLUE}操作系统信息:${RESET}"
cat /etc/os-release | grep PRETTY_NAME | cut -d '"' -f 2
show_load_history
divider
;;
esac
2. 使用方法
以下是一些常见命令和功能:
juzi version
:显示当前版本。juzi process
:查看当前系统进程。juzi network
:查看活动网络连接。juzi disk
:查看各挂载点磁盘使用情况。juzi temperature
:查看 CPU 温度。juzi logs
:查看系统日志。juzi users
:查看当前登录的用户。