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

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

一>開發shell腳本判斷系統剩餘內存的大小,如果低於100MB,就郵件報警給系統管理員,並且將腳本加入系統定時任務,即每三分鐘執行一次檢查。

1>開發腳本2019-02-10monitorMemory.sh:

#!/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" [email protected] </tmp/messages.txt
fi

2>把上述開發好的腳本加入到定時任務crond中。添加定時任務:crontab+e

#每三分鐘執行一次腳本2019-02-10monitorMemory.sh

*/3 * * * * /bin/sh /home/scripts/2019-02-10/2019-02-10monitorMemory.sh &>/dev/null


3>查看定時任務效果:

[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基本格式:

* * * * * cmd

提示:

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





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章