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