Shell脚本学习篇——使用crond定时执行任务(数据备份)

1. 前言

crond是linux系统中用来定期执行命令或者指定程序任务的一种服务或者软件。

用rpm -qa | grep crontab查看是否安装,如果没有安装就执行 yum install -y crontabs,Centos6/7系统默认存在。

常用命令(具体命令参考这一篇文章):

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

/sbin/service crond status //任务状态

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

crontab -l //列出某个用户cron定时任务列表

crontab -r //删除某个用户的cron服务(谨慎使用)

crontab -e //编辑某个用户的cron定时任务

2. crond格式说明

基本格式 :

*  *  *  *  *  command

分  时  日 月   周  命令

第1列表示分钟00~59 每分钟用*或者 */1表示

第2列表示小时00~23(0表示0点)

第3列表示日期01~31

第4列表示月份01~12

第5列标识号星期0~6(0表示星期天)

第6列要运行的命令

样例:

*/1 * * * *                     表示每分钟重启

0   2 * * 1                    表示每星期一的凌晨2:00重启

30 21 * * *                   表示每晚的21:30重启

30 21 1,10,22 * *        表示每月1、10、22日的21:30重启

10 1 * * 6,0                 表示每周六、周日的1:10重启

0,30 18-23 * * *          表示在每天18:00至23:00之间每隔30分钟重启

0 2 * * 6                      表示每星期六的凌晨2:00重启

* */1 * * *                     表示每一小时重启

* 23-7/1 * * *               表示晚上11点到早上7点之间,每隔一小时重启

0 11 4 * mon-wed       表示每月的4号与每周一到周三的11点重启

0 4 1 jan *                   表示一月一号的4点重启

3. 使用 

功能:使用crond每天备份consul数据,为异常情况使用。

定时任务启动脚本task.sh

#!/bin/bash
# root用户
currentUser=$(whoami)
if [ "$currentUser" != "root" ];then
	echo "当前用户为非root,请切换root用户:${currentUser}"
	exit 1
fi

function startTimeTask(){
	source /etc/profile 
	source /root/.bash_profile
	touch /var/spool/cron/root
	
	echo "**设置定时任务开始, 定时时间:每天  * * */1 * *"
	crontab -l > conf && echo "* * */1 * * ${currentpath}/backup.sh >> ${currentpath}/backup.log 2>&1 &" > /var/spool/cron/root
	if [ $? -eq 0 ]
	then
		echo "**设置定时任务成功"
	else
		echo -e "\033[31m**设置定时任务失败\033[0m"
	fi
	
	#启动服务,为防止crond已开启,选择重启服务
	/sbin/service crond restart 
	if [ $? -eq 0 ]
	then
		pid=`ps gaux | grep "crond" | grep -v grep |head -n 1| awk '{print $2}'`
		echo "**启动定时任务成功,pid=${pid}"
	else
		echo -e "\033[31m**启动定时任务失败\033[0m"
	fi	
}

#错误输出高亮格式
#echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"
#echo -e "\033[31m 红色字 \033[0m"

echo "****************************"
echo "***  启动定时任务开始   ****"
echo "****************************"

#获取当前目录
currentpath=$(pwd)

echo "----------------------------"
startTimeTask
echo "----------------------------"

echo "****************************"
echo "***  启动定时任务完成   ****"
echo "****************************"

任务脚本backup.sh:

#!/bin/bash
currentUser=$(whoami)
if [ "$currentUser" != "root" ];then
	echo "当前用户为非root:${currentUser}"
	exit 1
fi

#访问到执行目录
cd "/opt/consul"
#获取当前目录
currentpath=$(pwd)


#判断命令是否执行成功
function isExit()
{
	res=`echo $?`
	if [ $res = "1" ]; then
		echo -e "\033[31m执行脚本命令失败,退出! \033[0m"
		exit 1
	fi
}

# 备份Consul
function BackupConsul()
{
	Date=$(date +%Y%m%d-%H:%M) #测试
	#Date=$(date +%Y%m%d-%H:%M)
	echo "*备份生成文件名consul_kv_dnps_${Date}.json"
	./consul kv export --http-addr=http://127.0.0.1:8500 -token=b3a9bca3-6e8e-9678-ea35-ccb8fb272d42 '' > consul_kv_dnps_${Date}.json
}

echo "****************************"
echo "***定时启动备份Consul开始***"
echo "****************************"

echo "----------------------------"
echo "*当前目录:${currentpath}"
BackupConsul
isExit
echo "*备份Consul数据成功"
echo "----------------------------"

echo "****************************"
echo "***定时启动备份Consul完成***"
echo "****************************"

赋权限:  chmod +x task.sh  backup.sh

运行定时任务启动脚本: ./task.sh

查看定时任务列表:crontab -l

如果要删除某个定时任务:crontab -e  删除想要删除的定时任务

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值