Linux定时任务Day.23

一.什么是定时任务

定时任务就是定点执行某个任务。

二.为什么要用定时任务

电商秒杀,定时开启,定时关闭。

定时备份文件

定时同步时间

定时爬虫等等。。。

三.定时任务语法

*  *  *  *  * user-name  command to be executed

                      (用户名,那个用户)              (要执行的任务)

[root@localhost ~]# vim /etc/crontab

SHELL=/bin/bash(执行命令解释器)

PATH=/sbin:/bin:/usr/sbin:/usr/bin(环境变量)

SHELL=/bin/bash       

PATH=/sbin:/bin:/usr/sbin:/usr/bin

MAILTO=root(邮件发给谁)

# For details see man 4 crontabs

# Example of job definition:

# .---------------- minute (0 - 59)(分钟)

# |  .------------- hour (0 - 23) (小时)

# |  |  .---------- day of month (1 - 31)(日期)

# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...(月份)

# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat(星期)

# |  |  |  |  |

# *  *  *  *  * user-name  command to be executed

【符号代表】

*:代表任意的(分,时,日,月,周)时间都执行

-:表示一个时间范围,时间段,例:5-7

,:表示分隔时间段,例:6,0,4表示每周六,日,四都执行

*/1:表示每隔多长时间执行一次,例:*/10 表示每隔10分钟执行一次。

四.定时任务书写规范

00  02  *  *  *                          每天凌晨2点整执行

00  02  1  *  *                          每月1号凌晨2点整执行

00  02  14  2  *                      每年的2月14号凌晨2点整执行

00  02  *  *  7                          每周日凌晨2点整执行

00  02  *  6  5                        每年6月每周5凌晨2点整执行

00  02  14  *  7                      每月14号凌晨两点整执行,或者每月周日凌晨2点整执行。

00  02  14  2  7                      每年2月14日凌晨2点整执行,或每年2月的每周日凌晨2点整执行。

*/10  02  *  *  *                      每天从凌晨2点开始,每10分钟执行一次

*  *  *  *  *                              每分钟执行一次

00  00  14  2  *                      每年2月14日凌晨12点整执行

*/5  *  *  *  *                          每5分钟执行一次

00  02  *  1,2,8  *            每年1月,2月,8月的凌晨2点整都执行一次

00  02  1-8  *  *                      每月1号到18号凌晨2点整都执行

0  21  *  *  *                            每天21点整执行一次

45  4  1,10,22  *  *            每月的1号,10号,22号的凌晨4点45分执行。

45  4  1-10  *  *                      每月1号到10号的凌晨4点45分执行               

3,15  8-11  */2  *  *              每两天8点到11点的3分和15分各执行一次

0  23-7/1  *  *  *                    每天的23号到凌晨7点,每隔1小时执行一次。

15  21  *  *  1-5                    每周1到周5,21点15分执行

*  02  *  *  7                          每周日凌晨2点开始执行,2点的每1分钟都执行一次

四.定时任务使用方法

crontab命令

-e参数:编辑定时任务

-l参数:查看定时任务

-r参数:删除定时任务

-u参数:指定其他用户

【实践案例】

1.每天凌晨12点03分做一次备份,备份/etc/目录到/backup/下

准备环境:

[root@localhost ~]# mkdir /backup

(创建backup目录)

[root@localhost ~]# vim backup.sh

tar -zcf /backup/$(date +%F)_etc.tar.gz /etc

(编写脚本,打包/etc/到/backup目录下)

[root@localhost ~]# crontab -e

(添加定时任务)

编写定时任务:

#每天凌晨12点03分备份/etc/目录到/backup/目录下

03 00 * * * /usr/bin/bash backup.sh

(验证:date -s 更改时间,产看/backup目录是否有压缩包)

2.使用root用户每5分钟执行一次时间同步

[root@localhost ~]# crontab -e -u root

(添加定时任务,指定root用户)

[root@localhost ~]# crontab -l

#使用root用户每5分钟执行一次时间同步

*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null

五.crond注意事项

1.编写定时任务时一定要注释。

2.将需要定期执行的任务写入Shll脚本中,避免直接使用命令无法执行的情况,比如(tar,date等命令)。

3.定时任务的结尾一定要有&>/dev/null,或者将结果追加重定向>>/tmp/date.log文件。

4.注意有些命令是无法执行的,比如:(echo"123">>/tmp/test.log &>/dev/null)

5.在编辑定时任务时,命令必须得使用绝对路径。

六.crond如何备份

1.通过查看/var/log/cron中的执行记录,去推算执行的时间。

2.定时的备份/var/spool/cron/{uwername}

七.crond如何拒绝某个用户使用

使用root将需要拒绝的用户编写到/etc/cron.deny文件中

root用户

[root@localhost ~]# cat /etc/cron.deny

zhangyao

zhangyao用户

[zhangyao@localhost ~]$ crontab -e

You (zhangyao) are not allowed to use this program (crontab)

See crontab(1) for more information

你可能感兴趣的:(Linux定时任务Day.23)