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/*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值