第五天:函數與任務調度
函數的優勢
分而治之f
協同合作
方便管理
維護簡單
函數的結構
function 函數名()
{
命令1
命令2
命令3
}
函數的參數傳遞
向函數傳遞參數就像在一般指令碼中使用特殊變數$1,$2,$3…$9一樣,函數取得所傳參數後將原始參數傳回shell指令碼,因此最好先在函數內重新設定變數儲存所傳的參數。這樣如果函數有一點錯誤,就可以通過已經本地化的變數名迅速加以跟蹤。
函數檔案
當你手機一些經常使用的函數時,可以將之放入函數檔案中並將檔案載入shell。
檔案頭應包含語句#!/bin/bash,檔案名稱可任意選取,但最好與相關任務有某種實際聯絡。
#!/bin/bash
#注釋
function1()
{
}
函數檔案樣本
functions.main
#!/bin/bash
#functions.main
findit()
{
if [$# -lt 1 ];then
echo “usage:findit file”
return 1
fi
find / -name $1 –peint
}
函數使用樣本
. functions.main 載入函數
set 查看是否載入函數
findit 調用函數
findit functions.main 調用函數
unset findit 刪除findit函數
單次任務調度
at用於在指定時間調度一次性的任務.
格式:
at [選項] time
-f 從檔案中讀取命令或指令碼
-m在作業完成後,給使用者發電子郵件
-v 顯示作業唄執行的時間
服務啟動與停止
service atd start
service atd stop
刪除任務 atrm
單次任務調度樣本
at –f mycrontest.sh 10:00pm tomorrow
at –f mycrontest.sh 2:00am Tuesday
at –f mycrontest.sh 2:00pm Feb 11
at –f mycrontest.sh 2:00pm next week
迴圈調度crontab
crontab可以定期運行一些作業任務。它是一個指令碼,每次linux啟動時都會自動啟動該指令碼。
格式:
crontab [-e [UserName]|-l [UserName]|-r [UserName]]
-e執行文字編輯器來設定時程表
-l 列出文字編輯器來設定時程表
-r刪除目前的時程表
-v列出使用者cron作業的狀態
crontab配置
crontab可以定期運行一些作業任務。它是一個指令碼,每次linux啟動時都會自動啟動該指令碼。
全域設定檔 /etc/crontab
使用者設定檔 /var/spool/cron/
crontab的使用者配置
/etc/cron.allow
/etc/cron.deny
/etc/crontab
SHELL=/bin/bash
PATH=/sbin;/bin:/usr/sbin;/usr/bin
MAILTO=root
HOME=/
01 **** root run-parts /etc/cron.hourly
02 4*** root run-parts /etc/cron.daily
22 4**0 root run-parts /etc/cron.weekly
42 41** root run-parts /etc/cron.monthly
五個欄位,分 時 日 月 星期
crontab應用情境
每五分鐘測試與網關192.168.1.254是否連通 ping */5 * * * *
使用者alex每個周日中午12點備份samba的設定檔
0 12 * * 0 tar –czvf samba.tar.gz /etc/samba/smb.conf
總結回顧
函數的優勢
協同合作
檢查方便
進階靈活
任務調度的方式
at
crontab