LINUX脚本报错捕捉,Linux01-BASH脚本编程之信号捕捉及任务计划53
一、腳本編程知識點
1、獲取變量中字符的長度:${#VARNAME}
2、變量賦值:
a)${parameter:-word}:如果parameter為空或未定義,則變量展開為“word”;否則,展開為parameter的值;
如:A=3
echo ${A:-30}
unset A
echo ${A:-30}
b)${parameter:+word}:如果parameter為空或未定義,不做任何操作;否則,則展開為“word”值;
如:echo ${A:+30}
A=1
echo ${A:+30}
c)${parameter:=word}:如果parameter為空或未定義,則變量展開為“word”,并將展開后的值賦值給parameter;
如:unset A
echo {A:=30}
d)${parameter:offset}:offest表示跳過幾個;
e)${parameter:offset:length}:截取子串,從offset處的后一個字符開始,取lenth長的子串;
如:A=‘Hello world’
echo {A:2:3}
3、腳本配置文件
/etc/rc.d/init.d/服務腳本,服務腳本支持配置文件:/etc/sysconfig/服務腳本同名的配置文件
4、變量作用域,局部變量:local VAR_NAME=
如:編輯一個腳本,注意其中函數定義加local和不加local的區別
#!/bin/bash
#
a=1
test() {
local a=$[3+4]
}
test
for I in `seq $a 10`; do
echo $I
done
5、命令mktemp:創建臨時文件或目錄,避免與其他文件名重復
mktemp /tmp/file.XX(tmp目錄默認30天清理一次)
-d: 創建為目錄
二、信號捕捉
1、信號:
kill -SIGNAL PID
1: HUP
2: INT
9: KILL
15: TERM
2、腳本中,能實現信號捕捉,但9和15無法捕捉
Ctrl+c: SIGINT
3、信號捕捉命令:trap
trap 'COMMAND' 信號列表
如:編輯一個腳本,捕捉Ctrl+c信號;
#!/bin/bash
#
trap 'echo "You go ..."' INT
while :;do
date
sleep 2
done
4、一行執行多個語句,語句間用分號分隔;
腳本實例:
創建腳本ping.sh,捕捉Ctrl+c信號。并清理腳本運行中產生的臨時文件。
#!/bin/bash
#
NETWORK=192.8.8.
FILE=`mktemp /tmp/file.XX`
clearup() {
echo "quit..."
rm -rf $FILE
exit 1
}
trap 'clearup' INT
for I in `seq 10 200` ;do
if ping -c 1 -w 1 $NETWORK$I &> /dev/null;then
echo "$NETWORK$I is up." | tee >> $FILE
else
echo "$NETWORK$I is down."
fi
done
三、任務計劃
1、任務計劃方式:
a)在未來的某個時間點執行一次某任務;
at
batch
b)周期性地執行某任務;
cron
2、at相關
a)使用格式:
at 時間
at> COMMAND
at> Ctrl+d
b)指定時間格式:
絕對時間:HH:MM, DD.MM.YY ?MM/DD/YY
相對時間:now+#
單位:minutes, hours, days, weeks
模糊時間:noon, midnight, teatime
c)選項:
at -l = atq :顯示作業
at -d AT_JOB_ID = atrm AT_JOB_ID :刪除某個作業
d)/etc/at.deny和/etc/at.allow文件
控制使用at命令的用戶
e)命令的執行結果:將以郵件的形式發送給安排任務的用戶;
3、cron相關:
cron:自身是一個不間斷運行的服務,運行在線主機上。
anacron:cron的補充,能夠實現讓cron因為各種原因在過去的時間該執行而未執行的任務,在恢復正常執行一次;
a)cron:
a1)系統cron任務:定義在/etc/crontab中
格式:分鐘 小時 天 月 周 用戶 任務
a2)用戶cron任務:定義在/var/spool/cron/USERNAME中
格式:分鐘 小時 天 月 周 任務
b)時間的有效取值:
b1)分鐘:0-59
b2)小時:0-23
b3)天:1-31
b4)月:1-12
b5)周:0-7,0和7都表示周日
c)時間通配表示:
c1)*:對應的所有有效取值:
如:每小時的第三分鐘:3 * * * *
每周每小時的第三分鐘:3 * * * 7
每天的12點13分:13 12 * * *
每月6號12點13分:13 12 6 * *
每年的7月6號12點13分:13 12 6 7 *
c2),:離散時間點取值:
如:每小時的10分和40分:10,40 * * * *
每周二周五的每小時的10分40分:10,40 * * * 2,5
每周二周五的2點的10分40分:10,40 02 * * 2,5
c3)-:連續時間點:
如:每周一到周五的2點10分:10 02 * * 1-5
c4)/#:對應取值范圍內每多久一次,
如:每3分鐘一次:*/3 * * * *
每2小時:01 */2 * * *
每隔1小時:* */2 * * *
每隔一天:10 04 */2 * *
d)執行結果將以郵件形式發送給管理員;
如:只把錯誤的執行結果發送給管理員:
*/3 * * * * /bin/cat /etc/fstab > /dev/null
e)cron的環境變量:cron執行的所有命令都去PATH環境變量指定的路徑下去找,在腳本中添加:
#!/bin/bash
export PATH=/bin:/sbin:/usr/bin:/usr/sbin
f)用戶任務管理命令:crontab
-l:列出當前用戶的所有cron任務
-e:編輯cron任務
-r:移除所有cron任務
-u USERNAME:管理其他用戶的cron任務
g)cron服務
service crond status
chkconfig --list crond
4、anacron相關
a)/etc/anacrontab文件字段(最小時間單位是每天)
第一段:過去幾天未執行
第二段:開機后的第多少分鐘開始運行
第三段:表示注釋信息
第四段:表示執行的任務
b)anacron服務默認是關閉的:
service anacron status
cron任務練習:
配置本機每隔兩天在凌晨3點20分備份一次/etc目錄,備份文件存放至/backup/etc目錄。文件名形如:etc-2012-06-20.tar.bz2
20 03 */2 * * root /bin/tar -jcf /backup/etc/etc-`date +%F`.tar.bz2 /etc/*
總結
以上是生活随笔為你收集整理的LINUX脚本报错捕捉,Linux01-BASH脚本编程之信号捕捉及任务计划53的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 运维高级脚本生成器,Linu
- 下一篇: linux查看进程自身全路径,在linu