您好,登錄后才能下訂單哦!
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 ] then echo "Disk space on root at $SPACE% used"|mail –s “Disk warning” else echo "Disk space on root is OK" fi
添加任務計劃
運行此腳本的頻率取決于文件服務器的活躍程度。空間小的,一天一次;
#小型,每天上午12:30 30 0 * * * /root/diskmon #大型,每天4次,12:30,8:30,下午12:30和下午4:30 30 0,8,12,16 * * * /root/diskmon
#!/bin/bash # calculate disk usage and report per user TEMP=`mktemp -t tmp.XXXXXX` du -s /home/* |grep -v lost|sed 's/\/home\///'|sort -g -r > $TEMP TOTAL=`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.sh Total Disk Useage by User User Space Percent benny 3704 99.68% test 12 0.32% --------------------------- Total 3716
捕獲腳本
#!/bin/bash # script to capture system statistics OUTFILE=/root/capstats.csv DATE=`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 report FILE=/root/capstats.csv TEMP=/root/capstats.html MAIL=which mutt DATE=`date +"%A,%B,%d,%Y"` echo "<html><body><h3>Report for $DATE</h3>" > $TEMP echo "<table border=\"1\">" >> $TEMP echo "<tr><td>Date</td><td>Time</td><td>Users</td>" >> $TEMP echo "<td>Load</td><td>Free Memory</td><td>%CPU Idle</td></tr>" >> $TEMP cat $FILE |awk -F, '{ printf "<tr><td>%s</td><td>%s</td><td>%s</td>",$1,$2,$3; printf "<td>%s</td><td>%s</td><td>%s</td>\n</tr>\n",$4,$5,$6; }' >> $TEMP echo "</table></body></html>" >> $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 diretory DATE=`date +%y%m%d` FILE=archive$DATE SOURCE=/root/test DESTINATION=/root/archive/$FILE tar -cf $DESTINATION $SOURCE 2> /dev/null gzip $DESTINATION
創建每小時的歸檔腳本
#!/bin/bash # archive a working diretory hourly DAY=`date +%d` MONTH=`date +%m` TIME=`date +%k%M` SOURCE=/root/test BASEDEST=/root/archive mkdir -p $BASEDEST/$MONTH/$DAY DESTINATION=$BASEDEST/$MONTH/$DAY/archive$TIME tar -cf $DESTINATION $SOURCE 2> /dev/null gzip $DESTINATION
可結合cron
· 2)脫機存儲備份文件
工作目錄歸檔可以郵件附件的形式發送
#!/bin/bash # archive a working directory and e-mail it out MAIL=`which mutt` DATE=`date +%y%m%d` FILE=archive$DATE SOURCE=/root/test DESTINATION=/root/archive/$FILE ZIPFILE=$DESTINATION.zip tar -cf $DESTINATION $SOURCE 2> /dev/null zip $ZIPFILE $DESTINATION rm -f $DESTINATION $MAIL -a $ZIPFILE -s "Archive for $DATE" root@docker1.com < /dev/null
PS: df sed awk
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。