shell編程100例及代碼注釋——持續更新


 
1、編寫hello world腳本
#!/bin/bash
echo "Hello World!"

 

2、通過位置變量創建 Linux 系統賬戶及密碼
#!/bin/bash
useradd    "$1" 
echo "$2"  |  passwd  ‐‐stdin  "$1"

#$1 是傳給腳本的第一個參數,$2 是傳給腳本的第二個參數

# 命名為test.sh,保存退出,調用:
# bash Test.sh yln 123
# 創建了名為yln,密碼為123的賬戶
 
 
3、備份日志
# 每周 5 使用 tar 命令備份/var/log 下的所有日志文件
# 編寫備份腳本,備份后的文件名包含日期標簽,防止后面的備份將前面的備份數據覆蓋
#!/bin/bash
# vim  /root/logbak.sh
tar -czf log-`date +%Y%m%d`.tar.gz /var/log 

# date使用反引號括起來,反引號表示引號內部的字符作為命令執行,+%Y%m%d限定了date的格式是年月日,反引號在鍵盤<tab>鍵上面

# 腳本調用:
# crontab ‐e是指系統在某個時間執行的特定的命令或程序,后面的五個數字位是任務執行設置,分別代表分鍾,小時,日,月,星期幾調用logbak.sh
crontab ‐e 00 03 * * 5 /root/logbak.sh

 

 
4、一鍵部署 LNMP(RPM 包版本)
# LNMP是Linux + nginx + mysql + PHP,
# 編譯安裝需要輸入大量的命令,如果是配置生產環境需要耗費大量的時間。
# 搭建好LNMP環境之后就無需一個一個的輸入命令,無需值守,編譯安裝優化編譯參數,
# 提高性能,解決不必要的軟件間依賴,特別針對配置自動優化。
# 一鍵部署 LNMP(RPM 包版本)
# 使用 yum 安裝部署 LNMP,需要提前配置好 yum 源,否則該腳本會失敗
# 本腳本使用於 centos7.2 或 RHEL7.2
#!/bin/bash
yum ‐y install httpd   # httpd(網頁伺服器)實際上是Apache,它快速、可靠並且可通過簡單的API擴展,將Perl/Python等解釋器編譯到服務器中。
yum ‐y install mariadb mariadb‐devel mariadb‐server   # mariadbMariaDB數據庫管理系統是MySQL的替代,主要由開源社區在維護,
# 采用GPL授權許可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品。
yum ‐y install php  php‐mysql   # php‐mysql是搭配服用的:免費的 MySQL 數據庫通常是通過 PHP 來使用的
systemctl start httpd mariadb   # linux系統啟動服務:啟動httpd mariadb
systemctl enable httpd mariadb  # linux系統設置開機自啟動

 

 
5、監控內存和磁盤容量,小於給定值時報警
# 實時監控本機內存和硬盤剩余空間,剩余內存小於500M、根分區剩余空間小於1000M時,發送報警郵件給root管理員
# 提取根分區剩余空間(/)
# df:顯示磁盤分區上的可使用的磁盤空間,/代表linux根目錄,linux所有目錄都由它衍生出來
# awk:后面接條件+{動作},這里是按分隔符分割管道命令左邊的域,然后打印第4個域,\/等價於下面的Mem
# 提取內存剩余空間
# free:用來查看可用內存,有兩行物理內存:Mem,交換內存:swap,這里是提取第一行第四列
# 注意內存和磁盤提取的空間大小都是以 Kb 為單位
# if后面方括號寫明條件,如果條件為真,執行then后面的命令
# -le:shell中大於,大於等於,小於等於,lt,gt,ne,ge,le
# -a: shell的if有-a至-z的參數,-a file,代表:如果file存在則為真
# -s: 郵件主題,root:收件人,<<EOF.....是郵件內容
#!/bin/bash
disk_size=$(df / | awk '/\//{print $4}')
mem_size=$(free | awk '/Mem/{print $4}')
while :
do
if  [  $disk_size -le 512000 -a $mem_size -le 1024000  ]
then
    mail  ‐s  "Warning"  root  
	<<EOF
	Insufficient resources,資源不足
EOF
fi
done

  

 
          

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM