Linux定时执行任务

来源:互联网 发布:无主之地2 优化 编辑:程序博客网 时间:2024/06/04 18:52

目录

    • 目录
    • AT命令
    • Crontab 服务
        • Crontab简介
        • 启动Crontab服务
        • 安装cron
        • 一个简单的例子
        • Crontab配置文件格式
        • 例子
        • Crontab工具的使用
        • Crontab 配置文件
        • Crontab 常见错误
        • Crontab 半分钟执行一次
    • anacron


Linux下有两种定时执行任务的方法:at命令和Contab服务

AT命令

这里写图片描述
- at [选项] 时间
- 选项:
– m:当at工作完成时,无论是否有命令输出,都通过email通知执行at命令的用户
–c 工作号:显示该at工作的实际内容
- 时间:
- HH:MM 02:30
- HH:MM YYYY-MM-DD 02:30 2016-10-04
- HH:MM[am|pm] [month] [date] 02:30 July 25
- HH:MM[am|pm] + [minutes|hours|days|weeks] now +5 minutes
- at now +2 minutes
- atq 查询系统中的定时任务
- atrm 工作号 删除指定的at任务

Crontab 服务

Crontab简介

  • Crontab 是一个用于设置周期性被执行任务的工具

启动Crontab服务

  • service crond start
    这里写图片描述

安装cron

  • yum install vixie-cron
  • yum install crontabs

一个简单的例子

  • 每分钟打印当前时间到一个日志文件中
# crontab -e# */1 * * * * date >> /tmp/logo.txt

Crontab配置文件格式

* * * * * COMMAND|  |  | |  |--- 星期0~7(0或者7表示星期天)|  |  | |----- 月份1~12 |  |  |------ 日期 1~31|  |-------- 小时0~23|---------- 分钟0~59

例子

  • 每晚的21:30重启apache
    – 30 21 * * * service htttpd restart
  • 每月1、10、22日的4:45重启apache
    – 45 4 1,10,22 * * service httpd restart
  • 每月1到10日的4:45重启apache
    – 45 4 1-10 * * service httpd restart
  • 没个两分钟重启apache
    – */2 * * * * service httpd restart
    – 1-59/2 * * * * service httpd restart
  • 晚上11点到早上7点之间,每隔一小时重启apache
    – 0 23-7/1 * * * service httpd restart
  • 每天18:00至23:00之间每隔30分钟重启apache
    – 0,30 18-23 * * * service httpd restart
    – 0-59/30 18-23 * * * service httpd restart

Crontab工具的使用

  • 查看用户的计划任务:crontab -l
  • 编辑当前用户的计划任务:crontab -e [-u] [用户名]
  • 删除当前用户的计划任务:crontab -r

Crontab 配置文件

  • 全局(系统)配置文件
    – /etc/crontab
  • 用户配置文件
    – /var/spool/cron/root
  • 日志文件
    – /var/log/cron
  • 执行系统定时任务的方法
    – 手动指定定时任务
    – 系统定时任务
  • 第一种是把需要定时执行的脚本复制到/etc/cron.{daily,weekly,monthly}目录里面的任意一个
  • 第二种是修改/etc/crontab配置文件

Crontab 常见错误

  • 环境变量:Crontab不识别.bash_profile里面定义的环境变量
  • 第三个和第五个之间指定的是“或”操作
    – 四月的第一个星期日早晨1时59分运行a.sh
    – 59 1 1-7 4 * test `data + \%w` -eq 0 && /root/a.sh

Crontab 半分钟执行一次

  • 结合sleep命令
    – * * * * * sleep 30s; 命令

anacron

这里写图片描述
这里写图片描述
这里写图片描述

0 0