登陆前的检查
每次登录linux都想看一下系统的一些信息以及cpu和内存,但是不想手敲。整理了一份登录检查清单脚本,涵盖了系统的基础信息、内存、cpu、网络、docker等等的信息。
只需要在/etc/profile.d/创建这个脚本,粘贴下面的脚本内容;
vim /etc/profile.d/autosearchinfo.sh
然后赋予脚本的执行权限即可。每次登录就可以自动检查信息了。
chmod +x /etc/profile.d/autosearchinfo.sh
ps:内存使用率是使用bc命令计算的,bc命令先装。
1.Centos
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
clear
LogFileName=polling.$(date +%F-%T) EchoFormat=$(for (( i=0;i<30;i++ ));do echo -n "=";done)
RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m'
SystemInfo(){ printf "${BLUE}${EchoFormat} 系统信息 ${EchoFormat}${NC}\n" printf "系统类型: %-10s\n" $(uname -a| awk '{print $NF}') printf "系统版本: %-10s\n" "$(cat /etc/redhat-release)" printf "内核信息: %-10s\n" $(uname -r) printf "主机名: %-10s\n" $(uname -n) printf "编码格式: %-10s\n" ${LANG} printf "系统当前时间: %-10s %-10s\n" $(date +%F) $(date +%T) printf "系统运行负载: %-4s %-1s\n" $(uptime | awk -F: '{print $5 }'|awk -F, '{print $1,"%"}') printf "系统运行天数: %-10s\n" $(uptime |awk '{print $3}') printf "在线用户人数: %-3s\n" $(w|tail -n +3|wc -l) printf "SELinux: %-10s\n" $(grep "SELINUX=[d|e|p]" /etc/selinux/config |awk -F= '{print $2}') echo -e "最后一次修改时间: $(uptime -p)" echo -e "IP地址: $(hostname -I | cut -d' ' -f1)" echo -e "Cpu处理器: $(lscpu | grep "Model name:" | sed 's/Model name:\s*//')" echo -e "内存空间: $(free -h | awk '/^Mem:/ { print $3 "/" $2 }')" echo -e "交换空间: $(free -h | awk '/^Swap:/ { print $3 "/" $2 }')" }
CpuInfo(){ MemonyId=$(top -b -n1|awk 'NR==3'|awk -F, '{print $4}'| cut -c 1-5) MemonyUse=$(echo "100-${MemonyId}" |bc) printf "${RED}${EchoFormat} CPU信息 ${EchoFormat}${NC}\n" printf "逻辑CPU核数: %-3s\n" $(grep "processor" /proc/cpuinfo|sort -u|wc -l) printf "物理CPU核数: %-3s\n" $(grep "physical id" /proc/cpuinfo |sort -u|wc -l) printf "CPU架构: %-3s\n" $(uname -m) printf "CPU设置型号: %-3s\n" "$(grep "model name" /proc/cpuinfo |awk -F: '{print $2}'|sort -u|cut -c 2-50)" echo -e "CPU 1分钟负载: `awk '{printf "%15s",$1}' /proc/loadavg`" echo -e "CPU 5分钟负载: `awk '{printf "%15s",$2}' /proc/loadavg`" echo -e "CPU10分钟负载: `awk '{printf "%15s",$3}' /proc/loadavg`" printf "使用CPU占比: %-1s %-1s\n" ${MemonyUse} % printf "空闲CPU占比: %-1s %-1s\n" ${MemonyId} % printf "占用CPU Top10信息:\n\n" ps -eo user,pid,pcpu,pmem,args --sort=-pcpu |head -n 10 }
# Memory信息 MemoryInfo(){ printf "${GREEN}${EchoFormat} 内存信息 ${EchoFormat}${NC}\n" printf "总共内存: %-1s\n" $(free -mh|awk "NR==2"|awk '{print $2}') printf "使用内存: %-1s\n" $(free -mh|awk "NR==2"|awk '{print $3}') printf "剩余内存: %-1s\n" $(free -mh|awk "NR==2"|awk '{print $4}') printf "内存使用占比: %-1s %-1s\n" $(free | grep -i mem |awk '{print $6/$2*100}'|cut -c1-5) % printf "占用内存排名前10的soft:\n\n" ps -eo user,pid,pcpu,pmem,args --sort=-pmem |head -n 10 }
# 磁盘使用量排序: Disk_Info() { printf "${YELLOW}${EchoFormat} 各分区使用率 ${EchoFormat}${NC}\n" df -h echo }
# Swap信息 SwapInfo(){ printf "${BLUE}${EchoFormat} Swap信息 ${EchoFormat}${NC}\n" printf "Swap总大小: %-1s\n" $(free -mh|awk "NR==3"|awk '{print $2}') printf "已用Swap: %-1s\n" $(free -mh|awk "NR==3"|awk '{print $3}') printf "可用Swap: %-1s\n" $(free -mh|awk "NR==3"|awk '{print $4}') }
# 网络信息 NetworkInfo(){ printf "${RED}${EchoFormat} 网络信息 ${EchoFormat}${NC}\n" printf "IP地址: %-1s %-1s %-1s %-1s\n" $(ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:") printf "网关: %-1s %-1s %-1s %-1s\n" $(ifconfig -a|grep "netmask"|grep -v 127.0.0.1|awk '{print $4}') printf "DNS: %-1s %-1s %-1s %-1s %-1s\n" $(grep "nameserver" /etc/resolv.conf | awk '{print $2}') if (ping -c2 -w2 www.baidu.com &>/dev/null);then printf "网络是否连通: %s\n" 是 else printf "网络是否连通: %s\n" 否 fi }
# docker检查 DockerInfo(){ printf "${GREEN}${EchoFormat} docker运行情况 ${EchoFormat}${NC}\n" printf "当前正在运行的容器:\n $(docker ps --format "{{.Names}}")\n" printf "当前没有运行的容器:\n $(docker ps --format "{{.Names}}"|grep Exited)\n" }
# 直接登录后打印 SystemInfo CpuInfo MemoryInfo Disk_Info SwapInfo NetworkInfo DockerInfo
# 登录后进入查看模式 # All(){ # SystemInfo # CpuInfo # MemoryInfo # Disk_Info # SwapInfo # NetworkInfo # } # All >${LogFileName};less ${LogFileName}
|
2.Debian
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
clear
LogFileName=polling.$(date +%F-%T) EchoFormat=$(for (( i=0;i<30;i++ ));do echo -n "=";done)
RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[0;33m' BLUE='\033[0;34m' NC='\033[0m'
SystemInfo(){ printf "${BLUE}${EchoFormat} 系统信息 ${EchoFormat}${NC}\n" printf "系统类型: %-10s\n" $(uname -o) printf "系统版本: %-10s\n" "$(cat /etc/os-release | grep 'PRETTY_NAME' | cut -d '"' -f 2)" printf "内核信息: %-10s\n" $(uname -r) printf "主机名: %-10s\n" $(hostname) printf "编码格式: %-10s\n" ${LANG} printf "系统当前时间: %-10s %-10s\n" $(date +%F) $(date +%T) printf "系统运行负载: %-4s %-1s\n" $(uptime | awk -F: '{print $NF}' | awk -F, '{print $1,"%"}') printf "系统运行天数: %-10s\n" $(uptime | awk -F, '{print $1}' | awk '{print $3}') printf "在线用户人数: %-3s\n" $(who | wc -l) printf "SELinux: %-10s\n" $(getenforce 2>/dev/null || echo "Disabled") echo -e "最后一次修改时间: $(uptime -s)" echo -e "IP地址: $(hostname -I | cut -d' ' -f1)" echo -e "Cpu处理器: $(lscpu | grep "Model name:" | sed 's/Model name:\s*//')" echo -e "内存空间: $(free -h | awk '/^Mem:/ { print $3 "/" $2 }')" echo -e "交换空间: $(free -h | awk '/^Swap:/ { print $3 "/" $2 }')" }
# CPU信息 CpuInfo(){ MemonyId=$(top -b -n1 | awk 'NR==3' | awk -F, '{print $4}' | cut -c 1-5) MemonyUse=$(echo "100-${MemonyId}" | bc) printf "${RED}${EchoFormat} CPU信息 ${EchoFormat}${NC}\n" printf "逻辑CPU核数: %-3s\n" $(nproc) printf "物理CPU核数: %-3s\n" $(lscpu | grep "Socket(s):" | awk '{print $2}') printf "CPU架构: %-3s\n" $(uname -m) printf "CPU设置型号: %-3s\n" "$(lscpu | grep "Model name:" | sed 's/Model name:\s*//')" echo -e "CPU 1分钟负载: `awk '{printf "%15s",$1}' /proc/loadavg`" echo -e "CPU 5分钟负载: `awk '{printf "%15s",$2}' /proc/loadavg`" echo -e "CPU10分钟负载: `awk '{printf "%15s",$3}' /proc/loadavg`" printf "使用CPU占比: %-1s %-1s\n" ${MemonyUse} % printf "空闲CPU占比: %-1s %-1s\n" ${MemonyId} % printf "占用CPU Top10信息:\n\n" ps -eo user,pid,pcpu,pmem,args --sort=-pcpu | head -n 10 }
# Memory信息 MemoryInfo(){ printf "${GREEN}${EchoFormat} 内存信息 ${EchoFormat}${NC}\n" printf "总共内存: %-1s\n" $(free -h | awk '/^Mem:/ {print $2}') printf "使用内存: %-1s\n" $(free -h | awk '/^Mem:/ {print $3}') printf "剩余内存: %-1s\n" $(free -h | awk '/^Mem:/ {print $4}') printf "内存使用占比: %-1s %-1s\n" $(free | awk '/^Mem:/ {printf "%.2f", $3/$2*100}') % printf "占用内存排名前10的soft:\n\n" ps -eo user,pid,pcpu,pmem,args --sort=-pmem | head -n 10 }
# 磁盘使用量排序: Disk_Info() { printf "${YELLOW}${EchoFormat} 各分区使用率 ${EchoFormat}${NC}\n" df -h echo }
# Swap信息 SwapInfo(){ printf "${BLUE}${EchoFormat} Swap信息 ${EchoFormat}${NC}\n" printf "Swap总大小: %-1s\n" $(free -h | awk '/^Swap:/ {print $2}') printf "已用Swap: %-1s\n" $(free -h | awk '/^Swap:/ {print $3}') printf "可用Swap: %-1s\n" $(free -h | awk '/^Swap:/ {print $4}') }
# 网络信息 NetworkInfo(){ printf "${RED}${EchoFormat} 网络信息 ${EchoFormat}${NC}\n" printf "IP地址: %-1s %-1s %-1s %-1s\n" $(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d/ -f1) printf "网关: %-1s %-1s %-1s %-1s\n" $(ip route | grep default | awk '{print $3}') printf "DNS: %-1s %-1s %-1s %-1s %-1s\n" $(grep "nameserver" /etc/resolv.conf | awk '{print $2}') if (ping -c2 -w2 www.baidu.com &>/dev/null);then printf "网络是否连通: %s\n" 是 else printf "网络是否连通: %s\n" 否 fi }
# docker检查 DockerInfo(){ printf "${GREEN}${EchoFormat} docker运行情况 ${EchoFormat}${NC}\n" if command -v docker &>/dev/null; then printf "当前正在运行的容器:\n $(docker ps --format "{{.Names}}")\n" printf "当前没有运行的容器:\n $(docker ps -a --filter "status=exited" --format "{{.Names}}")\n" else printf "Docker 未安装或未启动\n" fi }
# 直接登录后打印 SystemInfo CpuInfo MemoryInfo Disk_Info SwapInfo NetworkInfo DockerInfo
# 登录后进入查看模式 # All(){ # SystemInfo # CpuInfo # MemoryInfo # Disk_Info # SwapInfo # NetworkInfo # } # All >${LogFileName};less ${LogFileName}
|