Linux的shell編程前奏之基礎技能實戰三mysql
一>開發shell腳本判斷系統剩餘內存的大小,若是低於100MB,就郵件報警給系統管理員,而且將腳本加入系統定時任務,即每三分鐘執行一次檢查。linux
1>開發腳本2019-02-10monitorMemory.sh:nginx
#!/bin/sh FreeMem=`free -m|awk 'NR==2 {print $NF}'` #獲取系統當前的內存值,賦給變量FreeMem CHARS="Current memory is $FreeMem" #定義字符串CHARS變量,做爲輸出及供郵件正文使用 if [ $FreeMem -lt 100 ] then echo $CHARS|tee /tmp/messages.txt mail -s "`date +%F-%T`$CHARS" 850034044@qq.com </tmp/messages.txt fi
2>把上述開發好的腳本加入到定時任務crond中。添加定時任務:crontab+eweb
#每三分鐘執行一次腳本2019-02-10monitorMemory.shsql
*/3 * * * * /bin/sh /home/scripts/2019-02-10/2019-02-10monitorMemory.sh &>/dev/null
3>查看定時任務效果:shell
[root@lll tmp]# cd /tmp;cat CrontabMem.txt Current memory is 2047. Current memory is 2047. Current memory is 2047. Current memory is 2047. Current memory is 2047.
總結:數據庫
i>awk中單引號和雙引號的效果和通常常規相反。即:單引號中的命令和變量會被解析輸出,而雙引號中的命令和變量會原樣輸出。 [root@lll /]# free -m total used free shared buff/cache available Mem: 976 118 674 7 183 690 Swap: 2047 0 2047 [root@lll /]# free -m|awk 'NR==3 {print $NF}' 2047 [root@lll /]# free -m|awk "NR==3 {print $NF}" Swap: 2047 0 2047
ii>linux中定時任務(crontab是定時任務命令,crond是crontab的守護進程):編程
A.crontab基本格式:bash
* * * * * cmdapp
提示:
① cmd爲要執行的命令或腳本,例如/bin/sh /server/scripts/lee.sh.
② 每一個段之間必需要有空格。
B.crontab語法格式中時間段的含義表:
段 含義 取值範圍
第一段 表明分鐘 00-59
第二段 表明小時 00-23
第三段 表明日期 01-31
第四段 表明月份 01-12
第五段 表明星期 0-7(0和7都表明星期日)
C.定時任務格式中:/n
n表明數字,即」每隔n單位時間」,例如:每10分鐘執行一次任務能夠寫 */10 * * * * cmd,其中 */10,*的範圍是0-59,也能夠寫成0-59/10。
D.crontab -l,查看定時任務;
crontab -e,添加定時任務;
iii>
liunx中「&>" 通常一個搜索命令有標準輸出和標準錯誤輸出,也就是」>"和「2>" 這兩個的結合體就是 」&>" 結果就是你輸入命令,正確和錯誤信息都不輸出在屏幕上直接輸到你重定向的一個文件內。
iiii>運維思想:
多種解決問題的思路。
彙報領導交代的任務就是要給領導多種選擇,即解決問題的幾種方案,兩三種最好。
我的以爲職場上很重要的三個競爭力就是:學習能力,職業壽命,人際關係。
二>用if條件語句針對Nginx web服務或Mysql數據庫服務是否正常進行檢測,若是服務未啓動,則啓動相應的服務。
1>開發mysql數據庫監控腳本2019-03-0701.sh
#/bin/sh if [ `netstat -lnt|grep 3306|awk -F "[ :]+" '{print $5}'` -eq 3306 ] then echo "Mysql is running." else echo "Mysql is stopped." /etc/init.d/mysqld start fi
2>開發mysql數據庫監控腳本2019-03-0702.sh
if [ `netstat -lnt|grep 80|awk -F "[ :]+" '{print $5}'` -eq 80 ] then echo "Nginx is running." else echo "Nginx is stopped." cd /application/nginx/sbin;./nginx fi
總結: 1>命令與命令之間能夠用;進行連起來使用在命令行執行。