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

Linux01-BASH脚本编程之信号捕捉及任务计划53,布布扣,bubuko.com

时间: 2024-10-24 23:20:02

Linux01-BASH脚本编程之信号捕捉及任务计划53的相关文章

shell 脚本编程之信号捕捉和主机探测

shell 脚本编程之信号捕捉和主机探测 =============================================================================== 概述: =============================================================================== 主机探测 1.写一个脚本,探测192.168.0.0网段中主机在线状态 [[email protected] bin]# cat 

bash脚本编程的语法知识点总结第二部分

bash脚本编程的语法知识点总结第二部分 承接第一部分进行总结分析 6.bash编程之交互编程 read -p"prompt" //提示 -ttimeout 给变量默认值 varName=${varName:-value} 如果varName不空,则返回varName的值:否则varName会使用value作为其值 使用read参数[-p]后,允许在[-p]后面跟一字符串,在字符串后面跟n个shell变量.n个shell变量用来接收从shell界面输入的字符串 [-p]用法:read

bash脚本编程之条件判断、条件测试

脚本编程: 编程面向过程有如下几种执行方式 顺序执行 选择执行:  如 if, case 循环执行:  如 for, while, until bash的变量类型: 本地变量 set VAR_NAME=value 设置变量赋值 如: set User=Centos unset VAR_NAME 撤消变量赋值 如: unset User=Centos ${VAR_NAME} 作用范围:当前shell进程: 局部变量 local VAR_NAME=value 设置变量赋值 unset VAR_NAM

bash脚本编程之变量、变量类型、条件测试、算术运算、及特殊变量

一.学习目的 1.了解bash脚本的变量类型及变量的使用 2.了解bash中条件测试的种类及如何在bash中实现条件的判断 3.学会在bash中做算术运算 4.了解特殊变量的使用 二.学习内容 1). ①.bash的变量类型: 环境变量 .本地变量.局部变量.位置变量.特殊变量 环境变量: export VALUENAME = VALUE 作用领域是当前的shell进程及其子进程 本地变量: VALUENAME= VALUE 作用领域为整个bash的进程 局部变量:local VALUENAME

《高级Bash脚本编程指南》十年来首次修订

新年伊始,开源慕课的知识库上线了.初期提供了<Linux命令大全/Bash 参考><高级Bash脚本编程指南>两个系列.其他资料正将陆续上线. 其中,<高级Bash脚本编程指南>对于Shell学习者来说,是一本神一样的书籍. 它的原作者是Mendel Cooper,英文名叫<Advanced Bash-Scripting Guide>发表在http://tldp.org/ 上,是一本免费的书籍. 有人说,学习Unix/Linux,有座山叫shell编程,你总

bash脚本编程之用户交互

bash脚本编程之用户交互: read [option]... [name ...] -p 'PROMPT'    读取输入的内容 -t TIMEOUT    超时时间,如果超过了该时间,继续执行下面代码 bash -n /path/to/some_script 检测脚本中的语法错误 bash -x /path/to/some_script 调试执行 示例: 输入一个磁盘文件信息,使用fdisk -l显示该磁盘信息 #!/bin/bash read -p "Enter a disk specia

bash脚本编程for

bash脚本编程:        if语句.bash -n.bash -x CONDITION:            bash命令:                用命令的执行状态结果:                    成功:true                    失败:flase 成功或失败的意义:取决于用到的命令: 单分支:            if CONDITION; then                if-true            fi 双分支:     

bash脚本编程基础

bash编程   bash脚本编程是过程式解释编程,其实就是linux命令的堆砌,既然是编程就应该有相应编程语法.    与任何过程式编程一样,过程式编程的特点就是:顺序执行,选择执行,循环执行.    过程式编程:以指令为中心,设计算法,数据服务于算法,过程式编程的灵魂:算法.    1.变量:数值变量,字符变量           bash环境:                本地变量:当前shell进程:                环境变量:当前shell进程及其子进程:       

压缩工具及bash脚本编程

回顾: RAID: 不同的服务器配置起来他的借口可能配置起来有所不同,但是官方一般都提供响应的说明书,按照说明书进行配置就行.关键是理解RAID级别的机制的意义是什么 LVM: 其实是一个逻辑设备他存在的主要作用是提供卷管理操作,我们称之为"volume", 卷管理操作的目的主要是实现把一个或多个底层的物理设备给组织成一个逻辑设备,我们可以将底层的任何类型的块设备,包括我们常见的基本磁盘分区,或者甚至是RAID都OK,只要他们提供块级别的存储空间,但是考虑到任何单个硬件设备他们的边界都