1、
crontab
介绍:
Crontab 是一个在
Unix
和
Linux
操作系统上用于定时执行任务的工具。
它允许用户创建和管理计划任务,以便在特定的时间间隔或时间点自动运行命令或脚本。
Crontab 是
cron table
的缩写,
cron
指的是
Unix
系统中的一个后台进程,它用于执行预定的任务。
2
、
crontab
命令工作流程
crontab 命令通常用于在
Linux
系统中设置定期执行的任务,并将这些任务存储在 crontab
文件中。
为了使用 crontab
命令,系统需要依赖
crond
服务的支持。通常情况下,在操作系统安装时,
crond服务会被默认安装并自动启动。
crond
进程会每分钟定期检查
crontab
文件中的任务列表,以确定是否有需要执行的任务,如果有,它会自动执行这些任务。当用户使用crontab
命令新建任务计划之后,该项
jobs
就会被
/var/spool/cron/ 目录下,
而且以用户账号来创建一个文件,每一项任务计划为一行。
crond 检测的时间周期是
“
分钟
”
, 每分钟会读取一次
/etc/crontab
,以及 /var/spool/cron 里面的记录并执行。
crond 执行的每一项任务计划,都会被记录到 /var/log/cron
这个日志文件。
两个对象:
后台服务
crond === 》# 读取 配置文件 crontab 文件
前台命令
crontab === 》# 结果 配置文件 crontab 文 件
通过:
ps -ef |grep crond # 验证是否后台服务启动
3
、
Crontab
命令语法
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
1/4
-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
个单位间隔
"-" 时间范围
"," 分隔的时段
4
、
Crontab
计划任务的格式
格式:分 时 天 月 周 用户 任务
第1
列分钟
0
~
59
第2
列小时
0
~
23
(
0
表示子夜)
第3
列日
1
~
31
第4
列月
1
~
12
第5
列星期
0
~
7
(
0
和
7
表示星期天)
第6
列要运行的命令
5
、操作案例:
crontab -e # 编辑crontab
文件内容
# 每天的凌晨
2
点执行重启阿帕奇服务
00 02 * * * service httpd restart
# 查看当前有几条计划任务
crontab -l
# 每个月的
15
号凌晨三点半重启服务器
30 03 15 * * reboot
# 每周日的凌晨一点半
30 01 * * 7
# 每天的凌晨十二点
00 00 * * *
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
分钟
其他案例:
#
创建脚本文件
mkdir /tmp/backupvim mysql_backup.sh#!/bin/bashmysqldump -uroot -p123456 -B mysql > /tmp/backup/mysql.sqlcrontab -e
#
每一分钟执行备份数据库脚本
3/4 */1 * * * * sh /root/mysql_backup.sh
#
查看日志
tail -f /var/log/cron
#
进入目录
,
库以及备份上了
cd /tmp/backup/ls