Linux定时任务之Crontab简介与使用

1、简介

Linux 系统定时任务则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。

crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

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

2、Crontab的工作原理

当用户使用crontab命令新建任务计划之后,该项 jobs 就会被 /var/spool/cron/ 目录下,而且以用户账号来创建一个文件,每一项任务计划为一行。
crond 检测的时间周期是 “分钟”, 每分钟会读取一次 /etc/crontab, 以及 /var/spool/cron 里面的记录并执行。
crond 执行的每一项任务计划,都会被记录到 /var/log/cron 这个日志文件。

3、Crontab格式说明

在这里插入图片描述

4、Crontab命令语法

crontab [-u user] file crontab [-u user] [ -e | -l | -r ]  

-u user用来设定某个用户的crontab服务。

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

-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

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

以下是可以用于指定时间的特殊符号:
"*"       代表所有的取值范围内的数字,任何时刻都接受。特别要注意!
"*/n"     表示每n个单位间隔
"-"       时间范围
","       分隔的时段

5、Crontab计划任务的格式

格式:分 时 天 月 周 用户 任务

第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令
6、环境准备
准备一台Centos6服务器
系统: Centos6.8 Centos6.5
内存:1G
cpu: 2核
IP地址: 10.0.0.53
crontab -e
编辑rontab文件内容
# 每天的凌晨2点执行重启阿帕奇服务
00 02 * * * service httpd restart
# 查看当前有几条计划任务
crontab -l
# 每个月的15号凌晨三点半重启服务器
30 03 15 * * reboot
# 每周日的凌晨一点半
30 01 * * 7
# 每年八月份的每个周二凌晨的五点半
30 05 * 8 2
# 每天的凌晨十二点
00 00 * * *
# 每天凌晨六点
00 06 * * *
# 每月13号的早上六点
00 06 13 * *
# 每周周二六点
00 06 * * 2
# 每年12月的周三的下午的三点半
30 15 * 12 3
3  * *   *   *      每小时的第3分钟
3  * *   *   7      每个周日的每小时的第3分钟
3  12 *   *   *     每天的12点3分
3  12 *   *   5     每周五的12点3分
3  12 6   *   *     每月6号的12点3分
3  12 6   7   *     每年7月6号的12点3分

,:离散时间点取值
10 ,40  * * * * 每小时的第10分钟和第40分钟
10 ,40  * * * 2,5 每周二和周五的每小时的第10分钟和第40分钟

-:连续时间点
10  02  *  *  *  1-5  每周一到五的2点10分

/:对应取值范围每多久一次
*/3  *  *  *  *      每3分钟
# 进到这个目录下
cd /var/spool/cron/
# 创建用户
useradd tom
# 切换用户
su tom
# 编辑计划任务文件
crontab -e
30 01 * * * ls /root/
crontab -u tom -l
ls
# 创建目录
mkdir /backup
# 安装数据库服务
yum -y install mysql mysql-server

在这里插入图片描述

# 创建脚本文件
vim mysql_backup.sh 
#!/bin/bash
mysqldump -uroot -p123  -B wg > /backup/wg.sql
crontab -e
# 每一分钟执行备份数据库脚本
*/1 * * * * sh /root/mysql_backup.sh
# 查看日志
tail -f /var/log/cron 

在这里插入图片描述

# 进入目录,库以及备份上了
cd /backup/

在这里插入图片描述

发布了68 篇原创文章 · 获赞 24 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/aaronszm/article/details/103930538