千家信息网

管理员shell脚本

发表于:2024-10-23 作者:千家信息网编辑
千家信息网最后更新 2024年10月23日,Technorati 标记: shell,df,sed,awk-监视系统统计信息监视磁盘空闲空间磁盘资源占用情况监视CPU和内存使用情况-执行备份归档数据文件脱机存储备份文件监视系统统计信息· 监视磁
千家信息网最后更新 2024年10月23日管理员shell脚本

Technorati 标记: shell,df,sed,awk

-监视系统统计信息

监视磁盘空闲空间

磁盘资源占用情况

监视CPU和内存使用情况

-执行备份

归档数据文件

脱机存储备份文件


监视系统统计信息

· 监视磁盘空闲空间

此shell脚本将监视特定卷上(如/)的可用磁盘空间,并在可用磁盘空间低于设置的阈值时发送一则电子邮件信息。

#!/bin/bash# monitor available disk space#注意格式 变量=`值`SPACE=`df|sed -n '/\/$/p'| gawk '{print $5}'|sed 's/%//'`if [ $SPACE -ge 20 ]thenecho "Disk space on root at $SPACE% used"|mail -s "Disk warning"elseecho "Disk space on root is OK"fi

添加任务计划

运行此脚本的频率取决于文件服务器的活跃程度。空间小的,一天一次;

#小型,每天上午12:3030 0 * * * /root/diskmon#大型,每天4次,1230830,下午12:30和下午4:3030 0,8,12,16 * * * /root/diskmon
· 用户磁盘使用情况
#!/bin/bash# calculate disk usage and report per userTEMP=`mktemp -t tmp.XXXXXX`du -s /home/* |grep -v lost|sed 's/\/home\///'|sort -g -r > $TEMPTOTAL=`du -s /home |gawk '{print $1}'`cat $TEMP |gawk -v n="$TOTAL" 'BEGIN {print "Total Disk Useage by User"print "User\tSpace\tPercent"}{printf "%s\t%d\t%6.2f%\n",$2,$1,($1/n)*100}END {print "---------------------------";printf "Total\t%d\n", n}'rm -f $TEMP
结果如下
[root@docker1 ~]# ./diskhogs.shTotal Disk Useage by UserUser Space Percentbenny 3704 99.68%test 12 0.32%---------------------------Total 3716
· 监控CPU和内存使用情况

捕获脚本

#!/bin/bash# script to capture system statisticsOUTFILE=/root/capstats.csvDATE=`date +%m/%d/%Y`TIME=`date +%k:%M:%S`TIMEOUT=`uptime`VMOUT=`vmstat 1 2`USERS=`echo $TIMEOUT | awk '{print $4}'`LOAD=`echo $TIMEOUT | awk '{print $9}'| sed 's/,//'`FREE=`echo "$VMOUT"| sed -n '/[0-9]/p' | sed -n '2p' | awk '{print $4}'`IDLE=`echo "$VMOUT" | sed -n '/[0-9]/p' | sed -n '2p' | awk '{print $15}'`echo "$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE" >> $OUTFILE
结果如下
[root@docker1 ~]# cat capstats.csv 12/11/2016, 0:09:02,2,0.04,183360,100输出html格式#!/bin/bash# parse capstats data into daily reportFILE=/root/capstats.csvTEMP=/root/capstats.htmlMAIL=which muttDATE=`date +"%A,%B,%d,%Y"`echo "

Report for $DATE

" > $TEMPecho "" >> $TEMPecho"" >> $TEMPecho"" >> $TEMPcat $FILE |awk -F, '{printf "",$1,$2,$3;printf "\n\n",$4,$5,$6;}' >> $TEMPecho"
DateTimeUsers LoadFree Memory%CPU Idle
%s%s%s%s%s%s
" >> $TEMP$MAIL -a $TEMP -s "Stat report for $DATE" root < /dev/null#rm -f $TEMP
结果如下

执行备份

使用shell脚本备份系统上数据的两种不同的方法。

· 1)归档数据文件

必需函数 tar命令

tar命令用于将整个目录归档为单个文件。

tar -cf archive.tar /root/test 2> /dev/null

创建日常归档文件

#!/bin/bash# archive a working diretoryDATE=`date +%y%m%d`FILE=archive$DATESOURCE=/root/testDESTINATION=/root/archive/$FILEtar -cf $DESTINATION $SOURCE 2> /dev/nullgzip $DESTINATION

创建每小时的归档脚本

#!/bin/bash# archive a working diretory hourlyDAY=`date +%d`MONTH=`date +%m`TIME=`date +%k%M`SOURCE=/root/testBASEDEST=/root/archivemkdir -p $BASEDEST/$MONTH/$DAYDESTINATION=$BASEDEST/$MONTH/$DAY/archive$TIMEtar -cf $DESTINATION $SOURCE 2> /dev/nullgzip $DESTINATION

可结合cron

· 2)脱机存储备份文件

工作目录归档可以邮件附件的形式发送

#!/bin/bash# archive a working directory and e-mail it outMAIL=`which mutt`DATE=`date +%y%m%d`FILE=archive$DATESOURCE=/root/testDESTINATION=/root/archive/$FILEZIPFILE=$DESTINATION.ziptar -cf $DESTINATION $SOURCE 2> /dev/nullzip $ZIPFILE $DESTINATIONrm -f $DESTINATION$MAIL -a $ZIPFILE -s "Archive for $DATE" root@docker1.com < /dev/null

PS: df sed awk

0