函式及指令碼的綜合應用1、
shell
函式:shell
允許將一組命令集或語句形成乙個可用塊,這些塊稱為
shell
函式。
函式由兩部分組成:
函式標題、函式體。
標題是函式名。
函式體是函式內的命令集合。
標題名應該唯一;如果不是,將會混淆結果,因為指令碼在檢視呼叫指令碼前將首先搜尋函式呼叫相應的
shell。
2、定義函式的格式為:
函式名()
如果願意,可在函式名前加上關鍵字
function
,這取決於使用者。
function
函式名()
3、舉例:
例1:刪除檔案中的空行
這個指令碼(指令碼名為del.lines)可以處理乙個或多個檔案。每個檔案在用
sed刪除空行之前要先核實是否存在。
sed的輸出被匯入乙個檔名中含有
$ $的臨時檔案,最後這個臨時檔案又被移回到原來的檔案中。
該指令碼使用
shift
命令取得所有的檔名,用
while
迴圈逐個處理所有的檔案,直至處理完
為止。可以使用
del.lines -
-help
獲得乙個簡短的幫助
儲存後給指令碼檔案增加執行許可權:chmod +x del.lines
執行指令碼進行測試:
1、basename
命令能夠從路徑中分離出檔名。通常用於
shell
指令碼中
2、shift語句用於遷移位置變數,將 $1~$9 依次向左傳遞
例如,若當前指令碼程式獲得的位置變數如下:
$1=file1
、$2=file2、$3=file3、$4=file4
則執行一次shift命令後,各位置變數為:
$1=file2
、$2=file3、$3=file4
再次執行shift命令後,各位置變數為:
$1=file3
、$2=file4
例2:如果某些日誌檔案超過了特定的長度(如8k),那麼它的內容將被倒換到另乙個檔案中,並清除原有檔案中的內容.
系統中的有些日誌檔案增長十分迅速,每天手工檢查這些日誌檔案的長度並倒換這些日誌檔案(通常是給檔名加個時間戳)是非常乏味的。可以編寫乙個指令碼來自動完成這項工作。該指令碼將提交給
cron
程序來執行,如果某個日誌檔案超過了特定的長度,那麼它的內容將被倒換到另乙個檔案中,並清除原有檔案中的內容。
該指令碼中日誌檔案的長度限制是由變數block_limit設定的。這一數字代表了塊數目,在本例中是8(塊大小預設為4k)。可以按照自己的需求把這一數字設得更高。所有要檢查的日誌檔名都儲存在變數logs中。
這裡使用了乙個for迴圈來依次檢查每乙個日誌檔案,使用du命令來獲取日誌檔案長度。
如果相應的檔案長度大於block_limit變數所規定的值,那麼該檔案將被拷貝到乙個檔案
名含有時間戳的檔案中,原先的檔案長度將被截斷為0。
注:du 並不是顯示檔案的實際大小,而是顯示檔案所占用的 block 大小,預設linux系統分割槽的 block size 是4k,也就是說即使檔案只有1個位元組,也會占用4k.
ls -l則是檔案的實際大小。
Nginx部署及綜合應用
nginx是一款輕量級的http伺服器軟體,由俄羅斯的igor sysoev開發。它能夠支援高達50000個併發連線數的響應,擁有強大的靜態資源處理能力,執行穩定,並且系統資源消耗非常低,現已逐漸被越來越多的使用者認可,目前很多大型 都應用nginx伺服器作為後端 程式的反向 及負載均衡器,來提公升...
shell指令碼函式的定義及應用(顏色)
需要知道 shell中的函式 函式是乙個功能,變數是值 函式功能 將所有的功能整合在一塊 可以實現迴圈執行 指令碼,指令碼一般是 的伺服器端程式,主要用於動態 的服務請求響應 故指令碼函式就是寫在指令碼中的特定功能函式了 指令碼中的函式是把乙個複雜的語句塊定義成乙個字串的方法,以後想使用某一功能時直...
mysql的綜合應用 MySQL的綜合應用學習筆記
避免寫入直接運算元據檔案 利用日誌來實現間接寫入 mysql共有5種日誌,其中只能redo日誌和undo日誌與事務有關。事務機制 rdbms sql語句 事務 acid 事務是乙個或者多個sql語句組成的整體,要麼全部執行成功,要麼全部執行失敗。管理事務 預設情況下,mysql執行每條sql語句都會...