前言听着 “半年回本” 的吆喝,不少人盯着即时零售的闪电仓,全国都超 5 万家了,谁不想踩上风口?可身边有朋友真扎进去,没俩月就愁眉苦脸:进货靠 16...
2025-09-24 0
作为一名Linux运维工程师,日常工作中总会遇到各种重复性任务:监控服务器性能、清理日志、批量处理文件、检查系统状态……如果每次都手动操作,不仅效率低下,还容易出错。这时,脚本就成了运维人员的“救命稻草”。一个好的脚本能帮你节省时间、降低错误率,甚至在关键时刻化险为夷。今天,我将分享10个Linux运维中超实用的脚本,涵盖监控、日志管理、备份、进程管理等场景。这些脚本简单易用、功能强大,绝对值得你收藏!
运维的日常离不开对服务器性能的监控,比如CPU、内存、磁盘使用率等。
这个脚本可以快速获取系统资源使用情况,并以清晰的格式输出。
#!/bin/bash# 获取当前时间TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')# CPU使用率(前1分钟平均负载)LOADAVG=$(uptime | awk '{print $10,$11,$12}')# 内存使用情况MEM_TOTAL=$(free -m | awk '/Mem:/ {print $2}')MEM_USED=$(free -m | awk '/Mem:/ {print $3}')MEM_USAGE_PERCENT=$((MEM_USED * 100 / MEM_TOTAL))# 磁盘使用情况DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}')# 输出结果echo "===== 系统性能监控 ($TIMESTAMP) ====="echo "CPU负载 (1min, 5min, 15min): $LOADAVG"echo "内存使用率: $MEM_USAGE_PERCENT% ($MEM_USED/$MEM_TOTAL MB)"echo "根分区磁盘使用率: $DISK_USAGE"
使用方法:
场景:快速排查服务器性能瓶颈,适合初学者或需要临时检查的场景。
日志文件占满磁盘是运维中常见的问题。这个脚本可以自动清理指定目录下超过一定天数的日志文件。
#!/bin/bashLOG_DIR="/var/log/app"DAYS=7# 查找并删除超过指定天数的日志文件find $LOG_DIR -name "*.log" -mtime +$DAYS -exec rm -f {} \;# 输出清理结果echo "已清理 $LOG_DIR 目录下 $DAYS 天前的日志文件"
使用方法:
场景:防止日志文件堆积导致磁盘满,适合Web服务器、数据库等场景。
数据备份是运维的生命线。这个脚本可以备份指定目录到目标路径,并压缩以节省空间。
#!/bin/bashSRC_DIR="/data"BACKUP_DIR="/backup"DATE=$(date '+%Y%m%d_%H%M%S')BACKUP_FILE="backup_$DATE.tar.gz"# 创建备份目录mkdir -p $BACKUP_DIR# 压缩备份tar -zcf $BACKUP_DIR/$BACKUP_FILE $SRC_DIR# 删除30天前的备份find $BACKUP_DIR -name "backup_*.tar.gz" -mtime +30 -exec rm -f {} \;echo "备份完成: $BACKUP_DIR/$BACKUP_FILE"
使用方法:
场景:数据库、配置文件或重要目录的定期备份。
需要快速检查多个服务的运行状态?这个脚本可以批量检查指定服务的状态。
#!/bin/bashSERVICES=("nginx" "mysql" "redis")for SERVICE in "${SERVICES[@]}"; do systemctl is-active --quiet $SERVICE if [ $? -eq 0 ]; then echo "$SERVICE 正在运行" else echo "$SERVICE 未运行,尝试重启..." systemctl restart $SERVICE if [ $? -eq 0 ]; then echo "$SERVICE 重启成功" else echo "$SERVICE 重启失败,请检查!" fi fidone
使用方法:
场景:监控关键服务(如Nginx、MySQL),自动尝试重启。
文件批量重命名在处理日志、备份文件时非常实用。这个脚本可以给指定目录下的文件添加前缀。
#!/bin/bashDIR="/path/to/files"PREFIX="backup_"for FILE in $DIR/*; do if [ -f "$FILE" ]; then mv "$FILE" "$DIR/$PREFIX$(basename $FILE)" fidoneecho "文件重命名完成!"
使用方法:
场景:批量整理文件名,适合日志归档、数据迁移等。
磁盘空间不足可能导致服务宕机。这个脚本监控磁盘使用率,超过阈值时发送邮件告警。
#!/bin/bashTHRESHOLD=80EMAIL="admin@example.com"DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | cut -d'%' -f1)if [ $DISK_USAGE -gt $THRESHOLD ]; then echo "警告:磁盘使用率达到 $DISK_USAGE%!" | mail -s "磁盘空间告警" $EMAILfi
使用方法:
场景:监控关键分区,及时发现磁盘空间问题。
僵尸进程会占用系统资源,这个脚本可以批量清理。
#!/bin/bashZOMBIES=$(ps aux | grep ' Z ' | awk '{print $2}')if [ -z "$ZOMBIES" ]; then echo "未发现僵尸进程"else for PID in $ZOMBIES; do kill -9 $PID echo "已杀死僵尸进程: $PID" donefi
使用方法:
场景:清理长期运行的服务器上的僵尸进程。
批量修改文件权限在多用户环境下很常见。这个脚本可以递归修改指定目录的权限。
#!/bin/bashDIR="/var/www/html"PERMISSION="755"chmod -R $PERMISSION $DIRecho "已将 $DIR 目录权限设置为 $PERMISSION"
使用方法:
场景:Web服务器文件权限统一调整。
了解服务器的网络连接状态对排查问题至关重要。这个脚本统计TCP连接状态。
#!/bin/bashnetstat -ant | awk '/^tcp/ {print $6}' | sort | uniq -c | sort -nr
使用方法:
场景:排查网络瓶颈,分析连接状态。
服务器时间不同步可能导致日志混乱或服务异常。这个脚本确保系统时间与NTP服务器同步。
#!/bin/bashntpdate pool.ntp.orgif [ $? -eq 0 ]; then echo "时间同步成功: $(date)"else echo "时间同步失败,请检查网络或NTP服务"fi
使用方法:
场景:保证分布式系统时间一致性。
相关文章
前言听着 “半年回本” 的吆喝,不少人盯着即时零售的闪电仓,全国都超 5 万家了,谁不想踩上风口?可身边有朋友真扎进去,没俩月就愁眉苦脸:进货靠 16...
2025-09-24 0
作为一名Linux运维工程师,日常工作中总会遇到各种重复性任务:监控服务器性能、清理日志、批量处理文件、检查系统状态……如果每次都手动操作,不仅效率低...
2025-09-24 2
9月17日,第22届中国—东盟博览会在广西南宁启幕,缅甸担任主题国,桂林市作为中国“魅力之城”,首次设立1万平方米人工智能专馆和新质生产力专馆,展览总...
2025-09-24 1
距离9月25日19:00的小米17系列发布会仅剩最后3天,雷军在微博亲自下场"剧透",晒出小米17 Pro系列实拍样张并放出狠话:"代号'逆光之王',...
2025-09-24 2
证券之星消息,利和兴(301013 09月23日在投资者关系平台上答复投资者关心的问题。投资者提问:董秘您好!请问贵司的业务、技术研发或战略布局中,是...
2025-09-24 1
早上和同事聊天,他说楼下的咖啡小店为了救生意开了美团线上店,却被平台捆得更紧:早7点到晚7点必须守店,新店想有曝光还得花钱买流量,算下来每天得多赔几百...
2025-09-24 0
9月23日,第三届全国技能大赛在郑州落幕。广西代表团在此次大赛中勇夺3枚银牌和4枚铜牌,1名选手获“西部技能之星”,1名选手获“参赛代表团最佳选手奖”...
2025-09-24 1
来源:新浪科技新浪科技讯 9月24日下午消息,今日,罗永浩与周鸿祎深度对谈,周鸿祎表示,Meta的杨乐坤说要做什么世界模型,李飞飞为什么要做世界模型?...
2025-09-24 3
发表评论