服务器信息收集脚本
快速收集服务器的IP、主机名、CPU、内存、磁盘、负载等关键信息,便于批量巡检和资产管理。
#!/bin/bash
#收集服务器信息脚本
ip_info=$(ifconfig | grep "Bcast" | tail -1 | awk '{print $2}' | cut -d: -f 2)
cpu_info1=$(cat /proc/cpuinfo | grep 'model name' | tail -1 | awk -F: '{print $2}' | sed 's/^ //g' | awk '{print $1,$3,$4,$NF}')
cpu_info2=$(cat /proc/cpuinfo | grep "physical id" | sort | uniq -c | wc -l)
serv_info=$(hostname | tail -1)
disk_info=$(fdisk -l | grep "Disk" | grep -v "identifier" | awk '{print $2,$3,$4}' | sed 's/,//g')
mem_info=$(free -m | grep "Mem" | awk '{print "Total",$1,$2"M"}')
load_info=$(uptime | awk '{print "Current Load: "$(NF-2)}' | sed 's/,//g')
mark_info='BeiJing_IDC'
echo -e "\033[32m-------------------------------------------\033[1m"
echo "IPADDR: ${ip_info}"
echo "HOSTNAME: $serv_info"
echo "CPU_INFO: ${cpu_info1} X${cpu_info2}"
echo "DISK_INFO: $disk_info"
echo "MEM_INFO: $mem_info"
echo "LOAD_INFO: $load_info"
echo -e "\033[32m-------------------------------------------\033[0m"
#echo -e → 启用反斜杠转义符的解释(如 ANSI 颜色代码的 \033)。
#\033[32m → 将文本颜色设置为绿色(ANSI 颜色代码 32)。
#------------------------------------------- → 要打印的实际行。
#\033[1m → 将文本设为粗体(ANSI 代码 1)。
#\033[0m → (可选) 重置格式(不存在于命令中,但通常在末尾使用)。
脚本说明:
- 自动输出服务器的IP、主机名、CPU型号与核数、磁盘、内存、负载等信息
- 适合批量巡检、资产盘点、自动化运维场景
nginx日志切割自动化脚本
定时切割nginx日志,归档历史日志并自动清理过期日志,保障日志管理有序。
#!/bin/bash
#nginx日志切割脚本,建议写入crontab每天0点自动执行
logs_path="/opt/ng1.28/logs/"
year=$(date -d "yesterday" +%Y)
month=$(date -d "yesterday" +%m)
day=$(date -d "yesterday" +%d)
mkdir -p "${logs_path}${year}/${month}"
mv "${logs_path}access.log" "${logs_path}${year}/${month}/access_${year}-${month}-${day}.log"
nginx_pid=$(cat "${logs_path}nginx.pid")
kill -USR1 "$nginx_pid"
echo "日志已成功切割至: ${logs_path}${year}/${month}/access_${year}-${month}-${day}.log"
find "${logs_path}" -type f -name "access_*.log" -mtime +6 -exec rm -f {} \;
echo "已清理 7 天前的旧日志"
脚本说明:
- 自动归档nginx access日志,按年月日分目录保存
- 向nginx主进程发送USR1信号,触发日志文件重新生成
- 自动清理7天前的旧日志,节省磁盘空间
💡 使用建议: 将脚本加入crontab定时任务:0 0 * * * /path/to/nginx_log_rotate.sh
服务状态监控与自动重启脚本
自动检测关键服务(如nginx)是否存活,异常时自动重启并记录日志,提升服务可用性。
#!/bin/bash
# 检查 Nginx 服务状态,如果停止则重启并记录
SERVICE_NAME="nginx"
LOG_FILE="/var/log/service_monitor.log"
if ! systemctl is-active --quiet "$SERVICE_NAME"; then
echo "[$(date)] - $SERVICE_NAME is DOWN. Attempting to restart..." >> "$LOG_FILE"
systemctl restart "$SERVICE_NAME"
if systemctl is-active --quiet "$SERVICE_NAME"; then
echo "[$(date)] - $SERVICE_NAME restarted SUCCESSFULLY." >> "$LOG_FILE"
else
echo "[$(date)] - ERROR: Failed to restart $SERVICE_NAME!" >> "$LOG_FILE"
# 可扩展为邮件/短信/电话告警
fi
fi
脚本说明:
- 定时检测服务状态,发现服务异常自动重启
- 重启结果写入日志,便于后续排查
- 可扩展为多服务监控、邮件/短信告警等
💡 使用建议: 配合crontab定时执行,如每5分钟检测一次:*/5 * * * * /path/to/service_monitor.sh
运维自动化建议
- 脚本需定期维护,路径、服务名等参数建议变量化
- 重要脚本建议加日志输出,便于追踪和排错
- 可结合crontab实现全自动化运维
- 生产环境建议加权限控制,防止误操作