开发工具

服务与进程管理

一、服务与进程管理

1. 关键服务存活检查

#!/bin/bash
# 检查Nginx是否运行,若停止则自动重启

service_name="nginx"  # 可替换为mysql、apache2等

if ! systemctl is-active --quiet $service_name; then
    echo "[错误] $service_name 未运行,尝试重启..." >> /var/log/service_monitor.log
    systemctl restart $service_name
    sleep 5
    if systemctl is-active --quiet $service_name; then
        echo "[恢复] $service_name 重启成功" >> /var/log/service_monitor.log
    else
        echo "[严重] $service_name 重启失败!" >> /var/log/service_monitor.log
    fi
fi


2. 僵尸进程检测

#!/bin/bash
# 统计僵尸进程数量

zombies=$(ps aux | awk '{print $8}' | grep -c 'Z')

if [ "$zombies" -gt 0 ]; then
    echo "[警告] 发现 ${zombies} 个僵尸进程 at $(date)" >> /var/log/system_monitor.log
    # 列出僵尸进程详细信息
    ps aux | awk '$8=="Z" {print "PID: "$2" 命令: "$11}' >> /var/log/system_monitor.log
fi



二、网络与连接监控

1. 端口存活检测

#!/bin/bash
# 检测指定端口是否在监听(例如SSH的22端口)

port=22

if ! netstat -tuln | grep -q ":$port "; then
    echo "[错误] 端口 $port 未监听 at $(date)" >> /var/log/network_monitor.log
fi


2. 网络流量异常检测

#!/bin/bash
# 监控eth0网卡的入站流量(单位:KB/s)

threshold=10000  # 流量阈值(KB/s)

rx_bytes_prev=$(cat /sys/class/net/eth0/statistics/rx_bytes)
sleep 1
rx_bytes_now=$(cat /sys/class/net/eth0/statistics/rx_bytes)

rx_kbps=$(( (rx_bytes_now - rx_bytes_prev) / 1024 ))

if [ "$rx_kbps" -gt "$threshold" ]; then
    echo "[警告] 网络入站流量异常: ${rx_kbps}KB/s at $(date)" >> /var/log/network_monitor.log
fi


三、日志监控与分析

1. 实时日志关键词监控

#!/bin/bash
# 监控/var/log/syslog中的"ERROR"关键词(Ctrl+C退出)

tail -fn0 /var/log/syslog | while read line; do
    if echo "$line" | grep -q "ERROR"; then
        echo "[发现错误日志] $line" >> /var/log/error_tracker.log
        # 触发告警操作
    fi
done


2. 登录失败报警

#!/bin/bash
# 分析SSH登录失败记录(针对暴力破解)

failed_attempts=$(grep "Failed password" /var/log/auth.log | wc -l)

if [ "$failed_attempts" -gt 10 ]; then
    echo "[安全警告] SSH登录失败次数: $failed_attempts at $(date)" >> /var/log/security.log
    # 提取攻击者IP
    grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq >> /var/log/ssh_attackers.log
fi