1 首先要寫一個(gè)測試腳本輸出內(nèi)存使用率
這是我寫的有報(bào)錯(cuò),下面有一個(gè)企業(yè)級的來對比一下我的錯(cuò)誤。
vim serverstatus.sh
used.mem="free -m | grep Mem | awk '{print$3}'"
total.mem=" free -m | grep Mem | awk '{print$2}' "
usepercent=$(used.mem*100/total.mem)
echo usepercent
這里插嘴一下,那個(gè)grep只能過濾一行的,出來是一行的
#!/usr/bin/bash
mem_used=`free -m | grep Mem | awk '{print $3}'`
mem_total=`free -m | grep Mem | awk '{print $2}'`
mem_percent=$((mem_used*100/mem_total))
echo "當(dāng)前內(nèi)存使用百分比:$mem_percent%"
后面的就好寫了然后是CPU負(fù)載 利用uptime命令可以看到平均負(fù)載
其中l(wèi)oad average的三個(gè)值分別表示1分鐘、5分鐘、15分鐘的CPU負(fù)載情況
(我這樣的命名方法是-#錯(cuò)誤#-的-根本識別不出變量)
average-load1 =`uptime | awk -F, '{print$3}' | awk -F: '{print$2}'`
average-load5=`uptime | awk -F, '{print$4}'`
average-load15=`uptime | awk -F, '{print$5}'`
然后是就是磁盤利用率
disk_percent=`df -h | grep "mapper"| awk '{print$5}'`
最后是io,這個(gè)是直接讀取第四行,注意的是==
io_average=`iostat -x| awk 'NR==4{print$4}'`
我試驗(yàn)了從外面導(dǎo)入數(shù)據(jù)庫,還是可以的
mysql -uroot -p123 -e "insert into lover.list values(1,2,3,4)"
mysql -uroot -p123 -e "insert into lover.list values($mem_percent,$average-load5,$disk_percent,$io_average)"
這里出現(xiàn)了一個(gè)錯(cuò)誤,由于disk_percent 導(dǎo)出來的是19%導(dǎo)不進(jìn)去
我當(dāng)時(shí)用的varchar來建表,問題是如果是非數(shù)字都要用' ' 注意是單
2019/7/14 我要開始練習(xí)我的腳本了
1 這是一個(gè)有關(guān)日志練習(xí)的小腳本
#清理今天所產(chǎn)生的導(dǎo)出文件
time1=$(date "+%Y-%m-%d");
exportpath="/root/jiaobeng/rizhi/$time1/";
echo $exportpath;
if [ -d $exportpath ];then
rm -rf $exportpath;
if [ $? -eq 0 ];then
echo "刪除文件夾$exportpath" >> /root/jiaobeng/rizhi/rm_export_dir_success.log;
fi
else
echo "文件夾不存在" >> /root/jiaobeng/rizhi/rm_day_exportdir.log;
fi
**********************************************************************************
我來理解一下,這就是日常清理每天日期文件,然后將處理信息分別發(fā)送對應(yīng)的日志
首先是要執(zhí)行腳本就要每天執(zhí)行,每天的文件夾也不一樣 同樣的來說執(zhí)行刪除命令的時(shí)候那個(gè)路徑也是一個(gè)變量
當(dāng)我創(chuàng)建一個(gè)當(dāng)前日期的文件夾是mkdir `date +%Y-%m-%d`
time1=$(date +%Y-%m-%d)
# 引用變量時(shí)要$, 如果要變$,不變的直接引用的命令加""
transportpath="/root/jiaoben/test/$time1"
# 看輸出路徑是否錯(cuò)誤
echo $transportpath
# 如果這個(gè)目錄存在則把這個(gè)目錄刪掉,shell 中判斷是用[],判斷目錄是否存在
if [ -d $transportpath];then
rm -rf $transportpath
echo "$transportpath刪除成功" >> 成功日志
else
echo "$transportpath文件夾不存在" >> 失敗日志
fi
其實(shí)不加第二個(gè)判斷也是可以的
編寫shell腳本,清理/var/logs/目錄下的一個(gè)持續(xù)增長的conn.log文件,以日為單位形成一個(gè)新的壓縮文件,并刪除30天前的日志壓縮文件
# vim cleanlog.sh 創(chuàng)建腳本
# tar -czf /root/jiaobeng/rizhi/19年07月13號-15:04:54/bjd.tar rm_day_exportdir.sh 我用這個(gè)命令試驗(yàn)了一下成功了
# 我來介紹一下壓縮的命令 tar -czf 首先是壓縮的路徑名字 然后是壓縮的內(nèi)容
tar -czf /log_backup/conn_`date +%y年%m月%d號-%H:%M:%S`.log.tar.gz /var/logs/conn.log
rm-rf/var/logs/conn.log
find /log_backup/-mtime+30 -exec rm{}\;
- 1)備份并壓縮/data目錄的所有內(nèi)容,存放在/backup目錄里,且文件名為如下形式
- yymmdd_data,yy為年,mm為月,dd為日
- 2)讀取/app/app.log文件中每行第一個(gè)域的全部數(shù)據(jù)加入到/backup/yymmdd_app_am.log,yy為年,mm為月,dd為日
- 3)刪除/app/app.log文件
- shell程序appbak存放在/usr/bin目錄下。(最少寫一個(gè)循環(huán))
vim/usr/bin/appbak
abc=`date +%Y%b%d`_data
tar-czf/usr/bin/backup/$abc /data
wait
cat /app/app.log |awk'{print$1}' >> /usr/bin/backup/$abc
rm -rf /app/app.log
# 這是什么鬼喲,文件還能加到壓縮文件中嗎?
- 實(shí)現(xiàn)用用戶輸入入用用戶名和密碼,當(dāng)用用戶名為ye或sk且密碼為123時(shí),顯示登陸成功,否則登陸失敗,失敗時(shí)允許重復(fù)輸入入三次
# shell中語法和python的語法細(xì)節(jié)有些不同,為避免弄混我先好好研究下shell
while true
do
read -p"請輸入你的用戶名:" username
if [[ $username = "ye" || $username = "sk" ]];then
for i in {1..3}
do
read -p"請輸入你的密碼:" password
if [[ $password = "123" ]];then
echo "您已成功登陸"
exit
else
echo "密碼錯(cuò)誤,需要重新輸入"
fi
done
echo "登陸失敗"
exit
else
echo "該賬戶不存在,請重新輸入"
fi
done