zoukankan      html  css  js  c++  java
  • Linux设置 定时任务

    之前Java的定时任务,可以在Linux下配置/etc/crontab定时发起请求,但是这样就会导致代码管理的不一致性。个人还是倾向利用Spring的quartz配置,这样代码都统一在一起管理,结构和功能都更清晰和统一。而是用crontab的方法,虽说手动也能触发可以对一些异常很好地补偿,但是也毕竟等于暴露了一个安全隐患,个人认为还是有斟酌余地。

    说了这么多题外话,各位就自行根据实际选用方案了。这里主要说说Linux的crontab。顺便提一下,据说,在PHP实现定时任务,这是首选方案。

    crontab文件的位置:

    /etc/crontab

    命令:

    cd /etc
    
    vim crontab

    可以清晰看到配置的提示说明

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name command to be executed

    5个参数时间参数,从左往右,分别是  分钟、小时、日、月、星期,其中(数字/* )代表 每(数字)单位执行一次。例子:

    #每分钟执行一次的两种实现
    
    #分钟为1则执行
    1 * * * * 
    
    #每1分钟执行一次
    */1 * * * *

    每天0时0点请求一次

    
    
    0 0 * * * root curl http://ding.shi.renwu?id=001&name=bobo
    或者

    0
    0 * * * root curl "http://ding.shi.renwu?id=001&name=bobo"

    这里提醒一下,URL传递参数,不能使用&,因为&在Linux下另有其义,用&连接参数会造成参数丢失。解决方法有两种:

    1,使用转义字符,& 代替 &

    2,url用双引号包围

    好了,就是这么简单,配置完成。

    想查看定时任务是否有执行,可以到日志文件查看,位置是:

    /var/log/cron

    cd /var/log
    
    tail -f cron

    这个日志,只记录定时执行情况,不显示执行后的返回结果。

    如果日志出现以下报错:

    (root) BAD FILE MODE (/etc/crontab)

    说明crontab文件的权限有误。其权限必须为600或者644,否则执行就会报错。

    还有就是定时设置格式有误,比如:

    (CRON) bad minute (/etc/crontab)

    说明分钟的设置有误。每分钟执行应为 */1,本文开始也误写作 1/*

    想查看请求调用的情况,可在调试阶段,直接使用curl命令检查方法是否正确执行

    curl "http://ding.shi.renwu"

    这个跟在浏览器直接输入请求还是很不同的,像上文提到的&字符问题,浏览器输入链接没有问题,但在Linux下调用必然出错。

    还有curl可以用 -d 选项 POST 参数等,这些都不是浏览器直接输入可以完成。

    如果,tail -f /var/log/cron一直有日志输出,但是vim /etc/crontab没有看见配置定时任务,这个时候尝试crontab -e 打开,进行定时任务编辑,保存后service crond restart。

    crontab -e
    service crond restart

    好了,基本的配置和一些小坑就介绍到这里,谢谢浏览~!~

  • 相关阅读:
    docker入门
    spring aop切面入门
    java 拉姆达 lamdba get
    Spring 3
    Spring 进阶二
    腾讯云 视频 点播 视频上传接口
    js 实时获取后台数据 Spring
    Spring 进阶一
    hibernate 第四天 重点查询的方式
    hibernate 第三天
  • 原文地址:https://www.cnblogs.com/xianxh/p/5869202.html
Copyright © 2011-2022 走看看