[root@localhostopt]#rpm-qa|grepcroncronie-1.4.11-19.el7.x86_64cronie-anacron-1.4.11-19.el7.x86_64yum-cron-3.4.3-167.el7.centos.noarchcrontabs-1.11-6.20121102git.el7.noarch检查cron服务是否运行
[root@localhostopt]#systemctlstatuscrond#centos7●crond.service-CommandSchedulerLoaded:loaded(/usr/lib/systemd/system/crond.service;enabled;vendorpreset:enabled)Active:active(running)since一2020-11-2310:34:46CST;6years4monthsleftMainPID:733(crond)CGroup:/system.slice/crond.service└─733/usr/sbin/crond-n[root@localhostopt]#servicecrondstatus#centos6
cron任务分为两类
系统的定时任务
cron服务除了会在工作时查看、car、spool、cron文件夹下的定时任务文件以外,还会查看/etc/cron/.d目录以及/etc/anacrontab下面的文件内容,里面存放每天、每周、每月需要执行的系统任务
[root@localhostopt]#ll/etc/|grepcron*-rw-------.1rootroot5414月112018anacrontabdrwxr-xr-x.2rootroot2111月232020cron.d#系统的定时任务drwxr-xr-x.2rootroot6511月242020cron.daily#每天的定时任务-rw-------.1rootroot04月112018cron.denydrwxr-xr-x.2rootroot4611月242020cron.hourly#每小时执行的任务drwxr-xr-x.2rootroot66月1006:14cron.monthly#每月的定时任务-rw-r--r--.1rootroot45212月82020crontabdrwxr-xr-x.2rootroot66月1006:14cron.weekly#每周的定时任务系统定时任务配置文件/etc/crontab
[root@localhostopt]#cat/etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/bin#路径信息很少,因此定时任务用绝对路径MAILTO=root#执行的结果邮件发送给用户#Fordetailsseeman4crontabs#Exampleofjobdefinition:#.----------------minute(0-59)#|.-------------hour(0-23)#||.----------dayofmonth(1-31)#|||.-------month(1-12)ORjan,feb,mar,apr...#||||.----dayofweek(0-6)(Sunday=0or7)ORsun,mon,tue,wed,thu,fri,sat#|||||#*****user-namecommandtobeexecuted#每一行,就是一条周期性任务user-name是以某一个用户身份运行任务commandtobeexecuted任务是什么用户定时任务计划
当系统管理员(root)或者普通用户(xiaolin)创建了需要定期执行的任务,可以使用crontab命令配置,crond服务在启动时,会每分钟查看/car/spool/cron路径下以系统用户名命名的定时任务文件,以确定是否需要执行的任务
[root@localhostopt]#ll/var/spool/cron总用量4-rw-------.1rootroot6212月82020root#查看此root定时任务文件的内容[root@localhostopt]#cat/var/spool/cron/root*/5****/user/sbin.ntpdatenep1.aliyun.com&>/dev/null#等用于crontab-l命令crontab命令
crontab命令备用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似
crontab命令就是修改/var/spool/cron中的定时任务文件
用户查看定时任务
crontab-d#列出用户设置的定时任务,等于cat/var/spool/cron/rootcrontab-e#编辑用户的定时任务,等于如上命令vi/var/spool/cron/root文件检查crond服务是否运行
/var/spool/cron定时任务的配置文件所在目录/var/log/cron定时任务日志文件/etc/cron.deny定时任务黑名单定时任务日志格式介绍
定时任务语法格式
口诀:什么时候做什么是
查看定时任务配置文件
[root@localhostopt]#cat/etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root
#Fordetailsseeman4crontabs
#Exampleofjobdefinition:#.----------------minute(0-59)#分钟#|.-------------hour(0-23)#小时#||.----------dayofmonth(1-31)#日期#|||.-------month(1-12)ORjan,feb,mar,apr...#月份#||||.----dayofweek(0-6)(Sunday=0or7)ORsun,mon,tue,wed,thu,fri,sat#周几(Sunday=0or7)周日=0或7#|||||#*****user-namecommandtobeexecuted
案例
每天上午8点30,去上学3008***gotoschool每天晚上12点回家回家睡觉0000***gohome定时任务符号
,号,表示分割时段,305,7表示每天的5点和7点执行命令
示例:
0****每小时执行,每小时的整点执行12**4每周执行,每周四的凌晨2点1分执行123**每月执行,每月的3号的凌晨2点1分执行1234*每年执行,每年的4月份3号的凌晨2点1分执行12**3,5每周3和周五的2点1分执行*13,14**6,0每周六、周日的下午1点和2点的每一分钟都执行09-18**1-5周一到周五的每天早上9点一直到下午6点的每一个整点(工作日的每个小时整点)*/10****每隔10分钟执行一次任务*7****如果没法整除,定时任务则没意义,可以自定制脚本控制频率定时任务最小单位是分钟,想完成秒级任务,只能通过其他方式(编程语言)*/1****/bin/sh/scripts/data.sh#每分钟执行命令
303,12***/bin/sh/scripts/data.sh#每天的凌晨3点半,和12点半执行脚本
30*/6***/bin/sh/scripts/data.sh#每隔6小时,相当于6、12、18、24点的半点时刻,执行脚本
308-18/2***/bin/sh/scripts/data.sh#30代表半点,8-18/2表示早上8点到下午18点之间每隔两小时也就是8、10、12、14、16、18的半点时刻执行脚本
3021***/opt/nginx/sbin/nginx-sreload#每天晚上9点30重启nginx
4541,10**/bin/sh/scripts/data.sh#每月的1、10号凌晨4点45执行脚本
101*6,0/bin/sh/scripts/data.sh#每周六、周日的凌晨1点10分执行命令
0,3018-23***#每天的18点到23点之间,每隔30分钟执行一次
00*/1***/bin/sh/scripts/data.sh#每隔一小时执行一次
0011*41-3/bin/sh/scripts/data.sh#4月份的周一到周三的上午11点执行脚本
#每天早上7点到上午11点,每2小时运行cmd命令0007-11/2***CMD
06***/var/www/test.sh#每天6点执行脚本04**6/var/www/test.sh#每周六凌晨4:00执行54**6/var/www/test.sh#每周六凌晨4:05执行408***/var/www/test.sh#每天8:40执行3110-23/2***/var/www/test.sh#在每天的10:31开始,每隔2小时重复一次02**1-5/var/www/test.sh#每周一到周五2:0008,9**1-5/var/www/test.sh#每周一到周五8:00,每周一到周五9:00010,16***/var/www/test.sh#每天10:00、16:00执行
生产环境用户配置定时任务流程
需求:每分钟向/opt/log文件中写入一句话“hellowenchang”
第一步:创建文件/opt/log
[root@localhostopt]#ll总用量4drwxr-xr-x.2rootroot612月82020-drwxr-xr-x.2rootroot612月820209{a-z}-rw-r--r--.1rootroot8112月82020bak.sh-rw-r--r--.1rootroot07月1312:51logdrwxr-xr-x.2rootroot612月82020p第二步,编辑定时任务文件,写入需要定时执行的任务
[root@localhostopt]#crontab-e*****/usr/bin/echo"hellowenchang">>/opt/log第三步,检查定时任务
[root@localhostopt]#crontab-l*****/usr/bin/echo"hellowenchang">>/opt/log第四步:可以检测文件内容
[root@localhostopt]#crontab-e*/5****/user/sbin.ntpdatenep1.aliyun.com&>/dev/null每晚0点整,把站点目录/var/www/html下的内容打包备份到/date目录下
提醒,tar命令不建议使用绝对路径打包,特殊情况可以使用-P参数
1.检查文件夹是否存在,不存在则创建[root@pylinux~]#ls-d/var/www/html/datals:无法访问/var/www/html:没有那个文件或目录ls:无法访问/data:没有那个文件或目录2.创建文件夹[root@pylinux~]#mkdir-p/var/www/html/data[root@pylinux~]#ls-d/var/www/html/data/data/var/www/html3.创建测试文件[root@pylinux~]#touch/var/www/html/chaoge{1..10}.txt[root@pylinux~]#ls/var/www/html/chaoge10.txtchaoge1.txtchaoge2.txtchaoge3.txtchaoge4.txtchaoge5.txtchaoge6.txtchaoge7.txtchaoge8.txtchaoge9.txt4.打包压缩命令[root@pylinuxwww]#tar-zcvf/data/bak_$(date+%F).tar.gz./html/编写shell脚本
[root@pylinuxscripts]#catbak.sh#!/bin/bashcd/var/www&&\/bin/tar-zcf/data/bak_$(date+%F).tar.gz./htmlcrontab-e写入0000***/bin/sh/server/scripts/bak.sh>/dev/null2>&1#/server/scripts/bak.sh脚本存放路径#解释>/dev/null2>&1代表把所有输出信息重定向到黑洞文件>是重定向符号/dev/null是黑洞文件2>&1代表让标准错误和标准输出一样此命令表示将脚本执行的正常或者错误日志都重定向到/dev/null,也就是什么都不输出>/dev/null2>&1等价于1>/dev/null2>/dev/null等价于&>/dev/null取消定时任务发邮件功能
1.定时任务的命令>/dev/null#命令的执行正确结果输出到黑洞,标准错误还是报错2.定时任务的命令&>/dev/null#组合符&>正确和错误的输出,都写入黑洞,危险命令,有风险,慎用补充anacron
如果由于机器故障关机,定时任务未执行,下次开机也不会执行任务
使用anacron下次开机会扫描定时任务,将未执行的,全部执行,服务区很少关机重启,所以忽略。