Linux的shell編程前奏之基礎技能實戰三

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>命令與命令之間能夠用;進行連起來使用在命令行執行。

相關文章
相關標籤/搜索