description |
---|
计划任务:就是有计划的让系统去自动执行某项操作,而无需人工干预 |
crontab 是系统自带的计划任务,系统安装完后,该包就自动被安装在系统里了。我们先来看下主配置文件写法:
[root@xb-db-074-010 ~ 13:12:17]#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
*/5 * * * * root /sbin/ntpdate s2m.time.edu.cn
说明:
* * * * * 分别代表:分、时、日、月、周
crontab -e 和 /etc/crontab 的区别:
crontab -e 是用户级别的:默认情况下执行crontab -e 会在 /var/spool/cron 目录下生成一个以当前用户命名的文件, 内 容就是使用 crontab -e 里面写的计划内容。如下:
我在 xinbo 用户下建了一个计划任务,每天0点0分执行tomcat 日志切割脚本:
[xinbo@xb-cj-034-030 ~ 13:04:43]$crontab -l
# 每天定时切割日志,并保留7天日志
0 0 * * * /bin/bash /home/xinbo/tomcat-log.sh
此时,我们切换到 root 用户下去查看 /var/spool/cron 目录是否有xinbo 这个文件,且内容是否是上面写的计划任务内容:
[root@xb-cj-034-030 ~ 13:03:20]#cat /var/spool/cron/xinbo
# 每天定时切割日志,并保留7天日志
0 0 * * * /bin/bash /home/xinbo/tomcat-log.sh
注:使用 crontab -e 写的计划任务,无需在任务内容中注明用户,因为它本身就是以当前用户命名,所以,它只会在当前用户下执行。如果在其中指定了运行的用户,该计划任务反而不会执行!
**/etc/crontab 是系统级别的:**就是说写在这个配置文件里面的计划任务列表,不管是root 用户还是其他普通用户的,都会执行。注:使用该配置文件写的计划任务,必须指定执行计划的用户,否则计划任务会执行失败,在 /var/log/cron 日志文件中输出:
ERROR (getpwnam() failed)