开发工具

其他有用命令

15 篇文章37 次收藏

1. 使用 sar 分析历史数据

# 查看昨日CPU使用率(需安装sysstat)
sar -u -f /var/log/sa/sa$(date +%d -d yesterday)

# 生成内存使用趋势图(输出CSV格式)
echo "时间,内存使用率" > memory_usage.csv
sar -r -s $(date +%H:%M:%S -d '1 hour ago') | awk '/^[0-9]/ {print $1","100-$NF}' >> memory_usage.csv



2. 使用 trap 捕获脚本中断

#!/bin/bash
# 脚本被中断时执行清理操作

cleanup() {
    echo "脚本被中断,清理临时文件..."
    rm -f /tmp/temp_*.log
    exit 1
}

trap cleanup SIGINT SIGTERM

# 主脚本逻辑
touch /tmp/temp_1.log
sleep 60  # 模拟长时间任务


3. 定时任务 (crontab)

将脚本添加到定时任务(crontab -e):

# 每5分钟检查一次资源
*/5 * * * * /path/to/cpu_mem_monitor.sh

# 每天凌晨生成日报
0 0 * * * /path/to/daily_report.sh


4. 日志轮转

配置 /etc/logrotate.d/system_monitor 防止日志过大:

/var/log/system_monitor.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
}


5. 权限管理

敏感操作(如重启服务)可能需要 sudo,建议配置免密权限:

# 在/etc/sudoers中添加:
your_user ALL=(ALL) NOPASSWD: /bin/systemctl restart nginx

通过以上脚本,你可以快速构建一个自动化监控系统,及时发现并处理问题,减少手动


6. 每日系统健康报告

#!/bin/bash
# 生成系统状态日报

report_file="/var/log/daily_report_$(date +%F).txt"
{
    echo "==== 系统日报 $(date) ===="
    echo "CPU负载: $(uptime | awk -F 'load average:' '{print $2}')"
    echo "内存使用: $(free -h | awk '/Mem:/ {print $3"/"$2}')"
    echo "磁盘使用:"
    df -h / /var /home
    echo "最近登录用户:"
    last | head -n 5
} > $report_file

# 发送邮件(需配置邮件服务)
# mail -s "每日系统报告" admin@example.com < $report_file


7. 定时任务(Cron)

通过crontab设置定时任务,实现全自动化:

# 每天凌晨3点备份数据库
0 3 * * * /usr/bin/mysqldump -u root -pPASSWORD dbname > /backups/db_$(date +\%F).sql

# 每周一清理临时文件
0 0 * * 1 rm -rf /tmp/*


8. 数据处理与报告

日志分析

提取HTTP 500错误并生成报告:

grep "HTTP/1.1\" 500" /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c > error_report.txt


CSV文件处理

用awk计算订单总金额:

awk -F',' 'NR>1 {sum += $3} END {print "总销售额: " sum}' sales.csv