定时任务

一、定时任务的作用

  1.定时任务相当于我们平时使用的闹钟

  2.定时任务可以自动完成操作命令

  3.定时备份系统数据等

二、定时任务软件分类

  1.atd

  定时任务只执行一次,一次性定时任务

  2.anacron

  非7*24小时运行的服务器

  3.cronie

  系统自带定时服务crond

三、定时任务实现方法:

  1.系统自带定时任务

  1)每小时定时任务

  任务目录:/etc/cron.hourly

  2)每天定时任务

  任务目录:/etc/cron.daily

  3)每周定时任务

  任务目录:/etc/cron.weekly

  4)每月定时任务

  任务目录:/etc/cron.monthly

  5)定时任务黑名单用户

  用户目录:/etc/cron.deny

  系统定时任务+logrotate命令完成对系统日志的切割和轮询

  日志目录:/etc/log/messages     /etc/log/cron      /etc/log/secure

  

  注意:系统中毒时,要注意查看系统自带定时任务

  2.用户自定义定时任务

  1)定时任务查看

  crontab -l == cat /var/spool/cron/root  (root用户)

  crontab -e == vim /var/spool/cron/root(root用户)

  crontab -e编辑定时任务时,可检查语法,我们下面着重介绍用户使用crontab -e自定义定时任务的方法。

四、使用脚本配置定时任务

  1.命令行测试命令

  /usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1

  命令或脚本输出结果必须放到黑洞/dev/null或某一文件中,不然会产生大量邮件,异常提示信息为:You have new mail in /var/spool/mail/root .占用磁盘inode和block

  2.编写脚本文件  

  mkdir /server/scripts -p;
  vim /server/scripts/shell01.sh;
  echo "`date +%F-%w` `uptime|awk -F "(s, )" '{print $2}'`" >>/tmp/oldboy.txt 2>&1

  编写脚本时,命令和文件路径最好都使用绝对路径,脚本和定时任务中系统只会在/bin和/usr/bin去找命令,也就是说如果你使用的命令不在这两个路径下,就不能被直接识别

  3.测试脚本

  /bin/sh /server/scripts/shell01.sh

  4.编写定时任务

  crontab -e ;

  * * * * * /bin/sh /server/scripts/shell01.sh

  五个*从左到右分别代表每分钟、每小时、每天、每月、每星期

  30 09 */2 * *    --- 每两天的9点30执行定时任务

  00 15,17 * * *    --- 每天的15点和17点执行定时任务

  */30 * 1-3 * *     --- 每月的1号到3号每30分钟执行一次该定时任务

  5.进行检查测试

  1)查看日志文件

  2)检查结果

五、定时任务的9个箴言

  1.定时任务之前加注释,说明该任务在干什么

  2.命令超过两行就使用脚本

  3.date命令的%前要加转译符,不然无法识别

  4.运行脚本一定要用/bin/sh或sh

  5.定时任务中,命令或脚本的输出结果必须定向到黑洞或文件中

  6.避免不必要的程序及命令输出,如打包解压时不加V参数

  7.打包压缩使用相对路径(切换到目标目录上一级目录进行打包)

  8.定时任务脚本中的程序文件,尽量使用绝对路径

  9.系统与命令位置有关的环境变量问题,定时任务中执行命令,只会到/bin/usr和/bin找命令文件

原文地址:https://www.cnblogs.com/yaozhiyuan/p/9394749.html