day 22 定时任务配置

定时任务配置

系统定时任务的软件
  • atd
    适合一次就结束的调度任务命令,进程服务是atd.
  • crond
    快速配置服务的命令,用于做一些周期性的工作。
  • anacron
    非7*24小时开机的服务器,检测服务器停机期间应该执行但没有执行进行的工作,并将该任务执行。
系统定时任务的配置文件目录

/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.weekly/
/etc/cron.monthly/

用户自定义配置
  • 配置命令crontab
    格式:crontab [选项]
    -l :list 查看 当前用户设置了哪些定时任务
    -e :edit 编辑定时任务
    crontab -l == cat /var/spool/cron/root
    crontab -e == vim /var/spool/cron/root
    /var/log/cron 定时任务日志文件
  • 配置方法
  1. 画图说明


    image.png
  2. 用户定时标识符


定时任务编写的问题
  • 如何编写实时任务
    第一种方法:用绝对路径编写。
    第二种方法:放到脚本文件中执行。
    文件中写入PATH的环境变量,方便给其它的命令使用。这时,也会出现三种错误:
    (1)例如:* * * * * ech oldboy /tmp/a.txt
    会显示命令找不到的错误,只有命令执行正确才会追加内容到a.txt文件中,如果命令错误则会追加到/var/spool/mail/root文件中。
    (2) 当postfix服务开启时,错误信息放在/var/spool/mail/root中,这时,文件会变的越来越大,占用block。
    当postfix服务关闭时,错误信息放在 cd /var/spool/postfix/maildrop/中,会生成很多小文件,占用系统的inode
    (3)定时任务中不能识别某些符号。
    解决的办法一:添加转义字符。
    如果(date +%F),默认是不识别%的。
    解决办法二:使用脚本
Crontab -e
Vim tar.sh
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/bin/notepad:/root/.local/bin:/root/bin
tar zcvhf  /tmp/hosts_$(date +%F).tar.gz /etc/hosts
Crontab -e
* * * * * sh /root/tar.sh
  • 写定时任务时的说明
    (1)写定时任务时要加注释说明,注释要包括(时间,编写的人员和任务的作用);
    (2)注意写环境变量,默认是/usr/bin; /bin;
    (3)注意一些符号要加转义;
    (4)输出的信息一定要定义到空文件中/dev/null;
    (5)尽量使用脚本文件完成。

  • 编写定时任务的规范
    1.使用命令编写定时任务
    (1)测试命令是否执行;
    (2)放入定时任务(用绝对路径);
    (3)调整时间进行测试;
    (4)检查日志/检查任务执行结果;

    1. 用脚本编写定时任务
      (1)先编写脚本;
      (2)测试脚本的执行;
      (3)放到定时任务中执行;
      (4)调整时间进行测试(先在自己的测试环境中测试,因为有的企业服务器不能随时更改时间);
      (5)检查日志/检查任务的执行结果;

你可能感兴趣的:(day 22 定时任务配置)