Ubuntu中使用crontab添加定时任务

前言:

对于一个项目维护者来说,数据库维护至关重要,数据丢失绝对是致命的,所以今天抽空加了下在ubuntu通过用户调度任务crontab定时备份数据库的功能,记录下~

1、crontab的简单介绍

crontab命令常用语unix和类unix的操作系统中,用于设置周期性的被执行的指令。通常,crontab存储的指令被守护进程激活,crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下的crontab文件中。

用户任务调度:用户定期要执行的工作,比如数据备份等,用户可以根据crontab工具来定制自己的计划任务,在/var/spool/cron/目录下。

2、crontab命令详解

1)、命令格式:crontab [-u user][-e|-l|-r]

其中:-u user:用来设定某个用户的crontab服务,此参数一般由root用户来运行。如果不指定用户则表示当前登录用户的crontab文件

file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。

-e:编辑某个用户的crontab文件内容

-l:显示某个用户的crontab文件内容

-r:删除某个用户的crontab文件

-i:在删除用户的crontab文件时给确定提示

2)、编辑crontab文件的格式

minute hour day month week command

一共包含6个字段,其中:

minute:表示分钟,范围0到59的任意整数

hour:表示小时,范围0-23的任意整数

day:表示日期,范围1-31的任意整数

month:表示月份,范围1-12的任意整数

week:表示星期,范围0-7的任意整数,其中0和7表示星期日

commang:要执行的命令,可以是系统命令,也可以是自己编辑的脚本文件。

Ubuntu中使用crontab添加定时任务_第1张图片

以上非命令字段中还可以使用以下特殊字符:

星号(*):代表所有可能的值

逗号(,):可以用逗号隔开的值指定一个列表范围,例如:“1,2,3”

中杠(-):表示一个整数范围,例如:"2-5"表示“2,3,4,5”

正斜杠(/):表示指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次;*/10:在minute字段中表示每10分钟执行一次。

3、通过sheel脚本添加数据库备份

1)、通过vim创建一个需要定期执行保存数据库备份的sheel脚本并进行保存

#!bin/bash
cd ~/backup/sqlbackup/
Now=$(date '+%Y%m%d%H%M%S')
File=wechat_$Now.sql
sudo musqldump -h host -u root -p'密码' datebaseName > 目录

注意:-p与密码之间 不能有空格,不然执行时会提示输入密码

2)、添加sheel脚本可执行权限

sudo chmod +x  XXX.sh:+x有固定含义,表示文件可执行,而后面的XXX表示文件名

3)、通过crontab -e添加任务

第一次进入会提示选择编辑器

Select an editor.  To change later, run 'select-editor'

选择你偏爱的一个即可,这里我选择的是vim base

然后进行添加你的定时任务:如 0 0 */1 * * sudo sh XXX.sh :每一天执行一次XXX.sh脚本进行数据库备份(注意如果0 0是* *的话,则是每天的每小时的每分钟)。

4)、将新增的定时任务加到cron服务中

$ sudo service cron restart

4、清除7天前的sql数据

添加定时任务见上,此处只说明如何编写删除7天前的命令,将其加到指定的sheel脚本中即可:

sudo find /home/ubuntu/backup/sqlbackup/ -mtime +7 -name "*.sql" -exec rm -rf {} \;
其中:find后紧跟想要清除的文件的目录

-mtime +7:表示7天前的时间

“*.sql”:以.sql结尾的文件

-exec rm -rf {} \;:执行文件清除(反斜杠\是分号;的转移符号)



你可能感兴趣的:(web)