shell管理腳本

shell管理腳本

shell 類型:

Bsh是Bourne Shell 的縮寫產生較早的UNIX Shell程序,實現最基本的解釋功能

Csh是C shell 的縮寫,因使用C語言的語法風格而得名,交互式界面做了很多的改進,增加了命令歷史,別名,文件名替換等

Ksh是Kron Shell 的縮寫,結合Bsh和Csh兩者的功能優勢,兼具Bsh的語法和Csh的交互特性,因此很受歡迎

Bash 是 Bourne Again Shell 的縮寫,從名字就可以看出是Bsh的升級替代品,很多linux版本默認運行的shell類型

Zsh更多的基於交互式考慮,集成了Bash Ksh等多種shell的特點,因此很受青睞

tcsh一個Csh的兼容升級版本

 

查看系統所能使用的shell程序列表:

對/etc/shells 查看

clip_p_w_picpath001[5]

 

系統已經把shell程序做了相應的鏈接

clip_p_w_picpath002[4]

 

切換到新的shell:

clip_p_w_picpath003[4]

 

更改用戶自己的登錄shell

clip_p_w_picpath005[4]

 

用戶能自己更改shell類型

由管理員更改用戶的shell類型則執行:usermod–s /bin/bash xiaowang即更改爲bash

 

Bash的常用功能:

命令歷史:

方向鍵上下能重複看已經輸入過的命令

在開頭加”!”號表示模糊匹配如 !ca就調用了我剛纔輸入的 cat 命令

history 命令可以顯示歷史命令表(默認保存 ~/.bash_history文件中)

history –c 清除歷史命令

通過”!”加序號,則從新執行指定命令

clip_p_w_picpath006[4]

 

設置記錄歷史命令的條數:

默認保存1000條命令,這可很不安全,我們分別來針對所有用戶和單個用戶來設置一下:

 

設置所有用戶的命令歷史條數:

/etc/profile 裏保存了針對所有用戶的配置

clip_p_w_picpath007[4]

這裏修該對所有用戶生效

 

針對個人修改:

vim /home/xiaowang/.bash_profile

clip_p_w_picpath008[4]

用戶配置將覆蓋全局配置(針對個人配置的優先)

 

 

命令別名:

alias 查看所有的已經設置的別名

alias 別名=’實際名利’設置一個命令別名

unalias別名取消這個別名

unalias–a 取消所有的別名

clip_p_w_picpath009[4]

 

 

標準輸入,輸出和重定向:

標準輸入(STDIN)默認設備鍵盤,文件編號爲0,

標準輸出(STDOUT)默認設備時顯示器,文件編號爲1

標準錯誤(STAERR)默認設備時顯示器,文件編號爲2

“>”輸出重定向,如果文件不存在則會建立這個文件

“>>”追加內容到文件,而不進行覆蓋

“<”輸入重定向,提過工作效率

 

修改用戶密碼:

clip_p_w_picpath010[4]

 

將標準輸出和錯誤輸出分開記錄:

clip_p_w_picpath012[4]

 

標準輸出和錯誤輸出放在一個文件裏記錄

clip_p_w_picpath013[4]

 

 

管道操作:

“|”管道符號表示第一個命令的處理結果交個第二個命令處理

ls–r / | wc–l 表示查看到根並統計一共幾行結果輸出就爲行數了

 

例一:找出系統中使用Bash作爲登錄shell,名稱以xiao開頭的用戶賬號,並只顯示出用戶名和登錄shell兩個字段

clip_p_w_picpath015[4]

cut 砍,切割的意思表示從輸出結果裏切割想要的字段

-d 指定以什麼標誌來切割上圖中用“:”號來切割

-f 指定想要輸出那些字段,我們輸出了第一和第七字段

 

 

例二:查看當前系統的總內存空間,剩餘可用空間,去除其他無用信息

clip_p_w_picpath016[4]

awk用於以空格或其他製表位爲分隔

‘{print $2,$4}’顯示第二和第四個字段

 

 

Shell變量的應用:

常見的shell變量的類型包括:用戶變量環境變量預定義變量位置變量

用戶變量:

由系統用戶自己定義的變量,只有在用戶自己的shell環境中有效,因此稱爲本地變量

定義新的變量:

DAY=Sunday

&號用於引用變量 echo $DAY 將會顯示sunday

clip_p_w_picpath017[4]

 

 

爲變量賦值的常用方法:

(=) 最基本的變量賦值方法

(“) 雙引號,使用雙引號時,允許在雙引號內引用其他變量的值

(‘) 單引號,不允許在單引號內引用其他變量的值,”$”號作爲普通字符來看

(`) 反撇號,允許將命令的執行的結果賦給變量

雙引號:

clip_p_w_picpath018[4]

單引號:

clip_p_w_picpath019[4]

反撇號:

clip_p_w_picpath020[4]

嵌套使用命令替換:可以用 $ ( )

clip_p_w_picpath021[4]

 

read read命令Bash的內置命令,可以從鍵盤讀取輸入,實現交換式過程。 read將從標準輸入讀入一行內容,並以空格爲分隔符,將讀入的字段分別賦值給指定列表中的變量(多餘的內容賦值給最後一個變量),若指定的變量只有一個,則將整行內容賦值給該變量

-p 設置提示信息

clip_p_w_picpath022[4]

 

設置提示信息(交互式):

clip_p_w_picpath023[4]

 

 

變量的作用範圍:

對於用戶自定義的變量,只能在當前的shell環境中使用,因此又稱爲局部變量,在開啓的新的子shell裏是無效的,爲了使用戶自定義的變量在所有的shell中都可用,我們要用export 命令來指定爲全局變量 export 可以同時指定多個變量爲全局變量,不需要$號,變量名以空格隔開

clip_p_w_picpath024[4]

 

也可以在創建的時候就指定爲全局變量;

clip_p_w_picpath026[4]

clip_p_w_picpath027[4]

 

清除自定義的變量;

unset 命令用於清除自定義的變量,後面指定一個或多個變量名即可,多個的話用空格分開

clip_p_w_picpath028[4]

 

 

數值變量的運算:(用expr表達式命令)

“+”加法運算

“- ”減法運算

“\*”乘法運算

“/”除法運算

“%”求模運算(取於運算)

clip_p_w_picpath030[4]

 

 

環境的變量:

環境的變量是指用戶登錄後,系統預設的shell變量,其功能是設置用戶的工作環境,包括用戶的宿主目錄,命令查找路徑,用戶當前目錄,登錄終端等

set 查看環境變量

 

查看多個變量;

clip_p_w_picpath032[4]

 

添加路徑信息:

clip_p_w_picpath034[4]

 

主提示符和輔助提示符的更改:

clip_p_w_picpath035[4]

 

環境變量的配置文件:

/etc/profile ~/.bash_profile前者爲全局配置文件後者爲個人配置文件後者覆蓋前者

clip_p_w_picpath036[4]

 

 

位置變量:

當執行service network restart 命令時,service腳本程序的第一個位置參數用”$1”表示,對用的值是”network” , 第二個位置參數用”$2”表示,對應的值爲”restart”,“$0”代表所執行的命令或腳本程序的名稱,雖然”$0”與位置變量的格式相同,但是”$0”屬於系統預定義變量而不是位置變量,在執行shell命令操作時,除了第一個字段(命令名或腳本程序名)以外,其餘的字符串參數按照從左到右的順序依次賦值給位置變量

預定義變量:

$# 表示命令行中位置參數的數量

$* 表示所有位置參數的內容

$? 表示命令執行後返回的狀態,(0 表示正確,非0 都爲錯誤)

$! 後臺運行的最後一個進程的進程號

$$ 表示當前進程的進程號

$0 表示當前執行的進程的進程名

clip_p_w_picpath037[4]

 

 

編寫shell腳本:

編寫一個完整的shell腳本須有以下步驟:

1.運行環境的設置指定用哪一個shell進行解釋開頭部分指出如(#! /bin/bash)

2.一個號的腳本註釋是不能少的,方便以後維護(註釋行以#號開頭)

3.可執行命令,這是核心(關於語句結構下篇講解)

執行shell腳本方式:

賦予腳本X(執行)權限後執行

“.”以點命令執行腳本等於 source 命令,

shell解釋器運行例: bash xxxx.sh (一般調試時用)

 

 

shell腳本案例一:

在每週五下班前(17:30)檢查公共共享目錄/var/ftp/pub/中的內容,並將其中所有子目錄及文件的詳細列表和當時的時間這些信息追加保存到 /var/log/pubdir.log 日誌中,然後清空該目錄中的內容

vim /root/ftpclean.sh

clip_p_w_picpath039[4]

chmod770 /root/ftpclean.sh

crontab–e

clip_p_w_picpath041[4]

 

 

 

shell 腳本案例二:

公司數據庫目錄位於 /var/lib/mysql要求至少三天做一次完整備份,備份前需要統計目錄佔用的總空間大小,並將備份日期,目錄空間大小等信息保存到臨時文件 /tmp/mysql.txt ,然後使用tar 命令將 /tmp/mysql.txt 隨着數據庫一塊備份到 /opt/dbbak目錄中,備份文件名要體現處當天的日期

1. 創建要備份到的目錄

mkdir /opt/dbbak

2. 編寫shell腳本

vim /root/mysqlbak.sh

clip_p_w_picpath043[5]

3. 添加腳本的執行權限

clip_p_w_picpath045[4]

4. 添加計劃任務

clip_p_w_picpath046[4]

 

 

本文檔完畢!!!

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