zoukankan      html  css  js  c++  java
  • linux定时任务

    Linux下的任务调度分为两类,系统任务调度和用户任务调度。

    系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

    /etc/crontab文件包括下面几行:

    [root@localhost ~]# cat /etc/crontab

    SHELL=/bin/bash

    PATH=/sbin:/bin:/usr/sbin:/usr/bin

    MAILTO=""HOME=/

    # run-parts

    1 0 * * * sh root /home/xg/test.sh 

    前四行用来配置crond任务运行的环境变量:

    • 第一行SHELL变量指定了系统要使用哪个shell,这里是bash
    • 第二行PATH变量指定了系统执行命令的路径
    • 第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户
    • 第四行的HOME变量指定了在执行命令或者脚本时使用的主目录

    1、vim /etc/crontab查看格式,也可直接在此文件下按照格式添加任务

    2、crontab -e 编辑用户的crontab文件

    3、service crontab restart 重启一下(貌似不重启也OK的)

    4、基本格式 :
        *  *  *  *  *  command
        分  时  日  月  周    命令

      eg: 1 0 * * * sh root /home/xg/test.sh   每天00:01执行test.sh脚本

    5、注意事项

    1)绝对路径:定时任务语句以及要执行的脚本中涉及到路径的统统写成绝对路径

    2)环境变量:有时我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。

    脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:source /etc/profile

    当手动执行脚本OK,但是crontab死活不执行时。这时必须大胆怀疑是环境变量惹的祸,并可以尝试在crontab中直接引入环境变量解决问题。即/etc/crontab的第二行。

    3)新创建的cron job,可能不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行。

    4)当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。

    5)在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d’。

  • 相关阅读:
    往鼠标位置写入 诗词
    shell条件判断
    shell 案例一
    Shell中的变量
    echo e 命令详解
    Docker 安装RedisJSON 与使用
    Python 插入数据库的各种方式
    Python压缩文件/文件夹
    shell运算符
    关于CAN总线简单总结
  • 原文地址:https://www.cnblogs.com/xingguang1130/p/8882882.html
Copyright © 2011-2022 走看看