Shell

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. 1)備份并壓縮/data目錄的所有內(nèi)容,存放在/backup目錄里,且文件名為如下形式
  2. yymmdd_data,yy為年,mm為月,dd為日
  3. 2)讀取/app/app.log文件中每行第一個(gè)域的全部數(shù)據(jù)加入到/backup/yymmdd_app_am.log,yy為年,mm為月,dd為日
  4. 3)刪除/app/app.log文件
  5. 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 
# 這是什么鬼喲,文件還能加到壓縮文件中嗎?

  1. 實(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Linux Shell常用shell命令 一、文件、目錄操作命令 1、ls命令 功能:顯示文件和目錄的信息 ls以...
    郭苒閱讀 7,342評論 0 1
  • Linux Shell常用shell命令 一、文件、目錄操作命令 1、ls命令 功能:顯示文件和目錄的信息 ls以...
    楓葉魚水閱讀 644評論 0 2
  • 一、文件、目錄操作命令 1、ls命令 功能:顯示文件和目錄的信息ls以默認(rèn)方式顯示當(dāng)前目錄文件列表ls -a 顯示...
    e514933f32da閱讀 364評論 0 0
  • 一,shell題記 不懂shell的程序員不是好程序員,學(xué)習(xí)shell是為了自動化,使用自動化可以非常有效的提高工...
    架構(gòu)師小秘圈閱讀 8,793評論 3 70
  • 小時(shí)候的我總想快點(diǎn)長大,去做自己想做的事。后來慢慢地長大了,卻又懷念過去時(shí)候的無憂無慮。于是,我在這條...
    大頭兒子99096閱讀 519評論 0 0

友情鏈接更多精彩內(nèi)容