基础服务管理篇(四)——crontab定时任务
1.概念
定时任务就是后台运行,到了预定的时间就会自动执行的任务,前提是要事先手动将计划任务设定好。如:
- 周期性任务执行
- 清空/tmp目录下的内容
- mysql数据库备份
2.作用
操作系统不可能24小时都有人在操作,有些时候想在指定的时间点去执行任务,此时不可能真的去在指定时间执行命令,这就可以交给计划任务程序去执行操作
3.查看计划任务
语法:crontab 选项
-l 列出指定用户计划任务表
-e 编辑指定用户计划任务表
-u 指定的用户名,若不指定,则表示当前用户
-r 删除指定用户的计划任务表
[root@localhost ~]# crontab -l
12 3 * * * /usr/bin/tar -zvf /opt/mysql_back.tgz /mysql_data &> /dev/null
4.编辑计划任务
[root@localhost ~]# crontab -e
计划任务的规则语法格式,以行为单位,一行则为一个计划:
分 时 日 月 周 需要执行的命令(!!!绝对路径)
[root@localhost ~]# cat /etc/crontab
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
分 时 日 月 周 用户名 需要执行的命令
取值范围:
分:0~59
时:0~23
日:1~31
月:1~12
周:0~7,0和7表示星期天
符号含义:
*:表示取值范围中的每一个数字
-:做连续区间表达式的,要想表示1~7,则可以写成1-7
/:表示每多少个,例如:想每 10 分钟一次,则可以在分的位置写:*/10
,:表示多个取值,比如想在1点,2点,6点执行,则可以在时的位置写1,2,6
# 使用which、whereis命令搜索绝对路径
[root@localhost ~]# whereis echo
echo: /usr/bin/echo /usr/share/man/man1/echo.1.gz /usr/share/man/man3/echo.3x.gz
[root@localhost ~]# which echo
/usr/bin/echo
5.crontab的权限
任何用户都可以创建计划任务crontab,但是root用户可以通过配置来设置某些用户的权限,不允许他们设置计划任务
5.1 黑名单配置文件
/etc/cron.deny写入用户名,一行只能写一个
禁止用户设置定时任务
[root@localhost ~]# vim /etc/cron.deny
[root@localhost ~]# cat /etc/cron.deny
jerry01 jack01
5.2白名单配制文件
/etc/cron.allow(本身不存在,需要自己创建)
!!白名单优先级高于黑名单,如果一个用户同时存在两个名单文件中,则会被默认允许创建计划任务
6.计划任务文件保存路径
/var/spool/cron/用户名 该目录存放用户的定时任务信息
[root@localhost ~]# ls /var/spool/cron/
jerry01 root
7.计划任务日志信息
/var/log/cron 该文件用于记录哪些用户执行了哪些任务