在linux系统中实现定时任务的方法不只是crontab,还有其他的
比如

  1. 利用crond 服务实现定时任务 ******
  2. 利用atd 软件实现定时任务 类似闹钟 一次设置, 只执行一次
  3. 利用anacron 软件实现定时任务 系统默认设置定时任务 设置时间不灵活
    /etc/cron.daily — 周期为每天 24小时计算为一天
    /etc/cron.hourly — 周期为每小时
    /etc/cron.monthly — 周期为每个月
    /etc/cron.weekly — 周期为每周

他们的意义就是为了周期性的执行某些任务
概念介绍: 周期性, 让系统完成相应操作任务
作用说明: 1) 周期性, 进行数据备份操作
2) 周期性, 重启服务程序 tomcat–java–耗费内存 移动互联网
3) 周期性, 切割日志信息
4) 周期性, 执行脚本文件

软件包名字:

1.查询命令的绝对路径
[root@localhost ~]# which crontab
/usr/bin/crontab
2.根据软件包中的绝对路径命令查询软件包名字
[root@localhost ~]# rpm -qf   /usr/bin/crontab
cronie-1.4.11-23.el7.x86_64
3.查看系统是否安装软件包
[root@localhost ~]# rpm -qa  cronie
cronie-1.4.11-23.el7.x86_64

软件的各种文件

[root@localhost ~]# cat /etc/crontab —实例文件

[root@localhost ~]# cat /var/spool/cron/root—配置文件(设置文件和命令配置效果一样)

[root@localhost ~]# cat /var/log/cron 定时任务的日志文件通过查看日志文件检测是否执行

[root@localhost ~]# cat /var/spool/mail/root —邮件服务文件(如果定时任务出现错误就会追加文件内容导致文件变大)

还有一个关闭邮件服务后产生小文件的,不过不记得了。

centos 定时每天晚上2点 linux定时任务每天执行一次_绝对路径


就是这个文件

/etc/cron.deny 这个文件是黑名单,写谁就是不允许谁编写定时任务

配置方法
通常定时任务和脚本结合使用。

crontab -e  编写 (有语法错误提示)
crontab -l  查看
vim   /var/spool/cron/root   编写配置文件
* * * * *
分 时 日 月 周
0 15,20 * * *  /bin/sh /server/scripts/cut_log.sh  下午三点和晚上八点执行任务
0 9-12 * * *  在9 -12每个小时点执行
0 */2 * * *   每隔两个小时执行一次
 0  5-10/2 * * * ???     5点到10点时间内, 每隔2个小时执行定时任务
 *(每) */n(每隔多久) n-m(从n到m整点执行) n,m(n和m整点执行) 
  
  建议星期信息和日期信息不要同时配置

0  1-5/2  * * *  学习  
意思: 凌晨1点-5点之间每隔2个小时执行定时任务

错误的理解方式:
0  5/3 * * *   ???      不能这样配置   
0  5,7,10/2 * * * ???	不能这样配置

特殊说明:

偶数每隔2个小时 在配置时间时需要注意 0 */2 * * * 的意思是说每隔两个小时的偶数时间
每隔两个小时的偶数时间执行一次,也就是说:2 4 6 8 10 12

奇数每隔两个小时 实现方法:
方法1;
0 1-23/2 * * * echo oldboy69 > /tmp/test_crond.txt
方法2:
59 */2 * * *

编写说明:
1.将任务命令进行测试
2编写定时任务
3测试定时任务是否执行

特殊:
1.在定时任务中使用命令的绝对路径
2.定时任务无法识别特殊符号
解决方法:
将有特殊符号的命令信息放入脚本文件中
将有些特殊定时任务不能是识别符号进行转义
3.定时任务产生的输出信息会占用磁盘空间

* * * * * cp /etc/hosts  /backup/hosts.bak  &>/dev/null
       * * * * * cp /etc/hosts  /backup/hosts.bak  >/dev/null 2>&1

&>/dev/null 或者 >/dev/null 2>&1 将定时任务执行时产生信息放入到黑洞中
避免信息占用磁盘空间
4.编写脚本也好还是定时任务也好,加上注释信息

日志信息说明:

Dec 25 09:01:02 oldboy69 anacron[7025]: Will run job `cron.daily' in 29 min.
    Dec 25 09:01:02 oldboy69 anacron[7025]: Jobs will be executed sequentially
      ①            ②        ③                ④

1定时任务出发时间信息
2定时任务执行主机名称
3定时任务触发方式
CROND配置定时任务
anacron系统默认定时任务(每天 每周 每小时目录)
4执行任务信息(用户信息)

遇到的问题

1.日志文件说没有什么问题但是就是没有效果

centos 定时每天晚上2点 linux定时任务每天执行一次_centos 定时每天晚上2点_02


解答是因为在crontab里面使用的命令都应该是绝对路径,不应该是直接使用命令。

杂碎

1./dev/null 系统黑洞

2.systemctl stop postfix.service 关闭邮件服务

3.日志文件的切割其实就是更改日志文件的名字,但是改名的日志文件需要源文件时不能是自己手动创建的,是系统重启服务时生成的,所以也要重启服务。

比如

centos 定时每天晚上2点 linux定时任务每天执行一次_定时任务_03


4.疑问:

学完后感觉将正确的和错误的信息都放入黑洞中,如果随着时间的推移,环境可能会有一些变化,开始定时任务是一直执行的,如果因为环境的原因定时任务执行出现错误,但是反馈的信息都被放入黑洞了,我意识到出现错误了呢?

解答:部署监控服务,使用监控服务来使定时任务出现错误时报警,让你知道。

注意:测试定时任务之前将时间先设定为00:00,再编写定时任务然后再设定时间进行测试。让系统识别时间的逻辑性正常,避免出现bug