shell編程語言的介紹
- shell簡介:
Shell是一種腳本語言,又是一種命令語言??梢酝ㄋ滓稽c來講,Shell腳本就是一系列命令的集合,可以在Unix/linux上面直接使用,并且直接調(diào)用大量系統(tǒng)內(nèi)部的功能來解釋執(zhí)行程序把一些重復性工作交給shell做,來實現(xiàn)自動化運維。
Shell 雖然沒有C/C++、Java、Python等強大,但也支持了基本的編程元素。例如:if、for、while、case等循環(huán),還有變量、數(shù)組、字符串、注釋、加減乘除邏輯運算等
- 常見的腳本語言:
shell、perl、php、python
- shell的優(yōu)點:
易用 #直接在linux系統(tǒng)上使用,不需要編譯
高效 #程序開發(fā)的效率非常高,依賴于功能強大的命令可以迅速地完成開發(fā)任務
簡單 #語法和結(jié)構(gòu)比較簡單,易于掌握
- shell應用場景:
監(jiān)控linux系統(tǒng)的健康度
數(shù)據(jù)的處理 #日志的切割、分析、統(tǒng)計等
與數(shù)據(jù)庫交互 #對數(shù)據(jù)庫進行增,刪,改,查等操作
監(jiān)控進程,自動化啟停服務
完成一些重復性的工作
shell編寫第一個腳本
- 編寫:vi first.sh
# !/bin/bash# 作者:菜園子# 編寫時間:2022-09-21# 功能:我的第一個shell腳本echo “this is my first shell !”
- 執(zhí)行:
sh first.shchmod 755 first.sh./first.sh
企業(yè)實戰(zhàn)之shell腳本與crontab定時器的運用
- crond服務:
以守護進程方式在無需人工干預的情況下來處理著一系列作業(yè)和指令的服務
- crond服務的啟停命令
啟動systemctl start crond.service查看狀態(tài):systemctl status crond.service停止systemctl stop crond.service重新啟動systemctl restart crond.service
- crontab定時器的使用
語法:crontab 【選項】crontab -l #列出crontab有哪些任務crontab -e #編輯crontab任務crontab -r #刪除crontab里的所有任務內(nèi)容格式:* * * * * 級別 命令分 時 日 月 周
- crontab的例子
每分鐘執(zhí)行* * * * * 或者 */1 * * * *每小時執(zhí)行0 * * * *每天執(zhí)行0 0 * * *每周執(zhí)行0 0 * * 0每月執(zhí)行0 0 1 * *每年執(zhí)行0 0 1 1 *每天早上6點執(zhí)行0 6 * * *每兩個小時執(zhí)行0 */2 * * *每小時的10分,40分執(zhí)行10,40 * * * *每天的下午4點、5點、6點的5 min、15 min、25 min、35 min、45 min、55 min時執(zhí)行命令5,15,25,35,45,55 16,17,18 * * *
利用shell腳本企業(yè)實戰(zhàn)nginx日志切割
需求:
- nginx的日志文件路徑
- 每天0點對nginx 的access與error日志進行切割
- 以前一天的日期為命名
腳本:
#!/bin/bash#Auto cut nginx log script.#Create by Cyz#Create date : 2022-09-21#nginx日志路徑logs_path=/usr/local/nginx/logsYesterDay=$(date -d ‘yesterday’ +%Y-%m-%d)#移動日志并以日期改名mv ${logs_path}/access.log ${logs_path}/access_${YesterDay}.logmv ${logs_path}/error.log ${logs_path}/error_${YesterDay}.log#向nginx主進程發(fā)送信號,重新生成日志文件kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
個人博客:cyz