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/*
转载于:https://blog.51cto.com/zkhylt/1426060
Linux01-BASH脚本编程之信号捕捉及任务计划53相关推荐
- LINUX脚本报错捕捉,Linux01-BASH脚本编程之信号捕捉及任务计划53
一.脚本编程知识点 1.获取变量中字符的长度:${#VARNAME} 2.变量赋值: a)${parameter:-word}:如果parameter为空或未定义,则变量展开为"word&q ...
- 高级Bash脚本编程指南《Advanced Bash-Scripting Guide》 in Chinese
<Advanced Bash-Scripting Guide> in Chinese <高级Bash脚本编程指南>Revision 10中文版 在线阅读链接:http://ww ...
- bash脚本编程入门_Bash编程入门
bash脚本编程入门 对Unix的最初希望之一是,它将使日常的计算机用户能够微调其计算机以适应其独特的工作风格. 在过去的几十年中,对计算机定制的期望已经降低,许多用户将他们收集的应用程序和网站视为他 ...
- Bash脚本编程之算术运算
简介 Bash所支持的算术运算和C语言是一样的,这里指的是操作符(operator)以及它们的优先级(precedence).结合性(associativity)和值,详见Shell Arithmet ...
- linux bash脚本编程知识点
bash变量类型: 环境变量 本地变量(局部变量) 位置变量 特殊变量 本地变量: set VARNAME=VALUE: 作用域为整个bash进程: 引用变量 $(varname) 局部变量: loc ...
- linux的逻辑运算参数,Linux基础之bash脚本编程初级-逻辑运算与测试
引言 前面介绍了bash编程的基础变量与算术表达式,本文介绍在脚本中的进阶知识:测试 在bash中测试大体分两部分:条件测试.组合测试. 而条件测试又分:数值测试.字符串测试.文件测试. 组合测试则有 ...
- bash脚本编程之条件判断、条件测试
脚本编程: 编程面向过程有如下几种执行方式 顺序执行 选择执行: 如 if, case 循环执行: 如 for, while, until bash的变量类型: 本地变量 set VAR_NAME ...
- linux内核与bash脚本接囗,Bash脚本编程之脚本基础和bash配置文件
脚本基础 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成机器可运行的二进制程序文件后,方可运行.例如C语言和Java语言. 解释运行:需要一个 ...
- Bash脚本编程学习笔记02:脚本基础和bash配置文件
脚本基础 参考资料:Shell Scripts (Bash Reference Manual) 不严谨地说,编程语言根据代码运行的方式,可以分为两种方式: 编译运行:需要先将人类可识别的代码文件编译成 ...
- 网络编程之 信号捕捉器(函数指针与回调函数)
接着我们的信号说下去 之前博主给大家分享到了信号的概念和初步介绍signal函数的形式后就没有继续往下介绍了,实在是因为时间不够,那个时候博主还要上课,现在博主放假了就好好给大家分享一下如何 ...
最新文章
- 674 Longest Continuous Increasing Subsequence(每日一题)
- ext显示服务器文件,使用linux的fsck.ext2命令检查及修复ext2文件系统
- 印度HCL揭秘云计算五大盈利模式
- TreeNode.trage的使用
- php 怎么开启错误报告,php错误报告级别怎么设置?
- phpcms v9二级栏目生成到根目录后三级栏目无法访问的解决办法
- 记录PHP错误日志 display_errors与log_errors的区别
- java 与 php 区别或异同(整理、整合)
- php 留言回复,PHP 留言板后台管理回复及删除留言处理
- 2022年投影仪推荐 家用投影仪推荐一下哪款比较好2022
- 手握百万恶意IP,阿里云要跟黑客拼了 | 云栖大会
- 水晶报表 php,VS2015环境下Crystal Reports(水晶报表)的安装使用
- 计算机软件方面的基金,天天基金
- 模电学习笔记--二极管
- (*长期更新)软考网络工程师学习笔记——Section 13 Linux网络配置命令
- 一款png生成webp,gif, apng,同时支持webp,gif, apng转化的工具iSparta
- 人脸识别 年龄 matlab,基于年龄变化的人脸识别
- 非标自动化设备涉及的行业有哪些?
- EDAS发布单工作原理及问题排查
- 优惠券系统-第三章-活动中心