• crontab定时调度shell脚本


    本人最近要用crontab做一个定时调度任务,调一个启动脚本去执行jar包,并给main方法传一个日期参数。

    Linux系统:CentOS7

    输入:

    crontab -e
    

    在里面编写:

    SHELL=/bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    
    #分 时 天 月 星期     脚本路径
    05 15 * * * /bin/sh /data/IPPParser/startup_cyc.sh
    

    意思就是每天下午15:05 去执行startup_cyc.sh这个脚本。

    脚本的内容: 

    #使JAVA_HOME生效
    source /root/.bash_profile
    #进入项目根路径
    cd /data/IPPParser
    #!/bin/sh
    
    if [ -z "$JAVA_HOME" ]; then
    echo "Please configure the JAVA_HOME!"
    exit
    fi
    
    JAVA_OPTION="-Dfile.encoding=UTF-8 -Xmx256M -Xms256M"
    #jar包名称
    JAR_NAME=ippparser.jar
    #传的参数
    PARSE_DATE=`date -d "yesterday" +%Y%m%d`
    #调用jar包命令
    java $JAVA_OPTION -jar $JAR_NAME $PARSE_DATE

    问题汇总:

    一.crontab不生效,需要检查的地方

    1.检查cron状态

    service crond status
    

     可以看到crontab是active状态

    如果不是这个状态,说明crontab没有启动。

    重启:systemctl restart crond

    2.检查cron是否有调用shell命令

    可以看到cron在15:05有调用脚本。

    3.cron调用了命令,但是没生效(如:手动调脚本可以执行,但是cron调用不行)

    看cron邮件: cat /var/spool/mail/root

    说明我们的程序已经成功调用。如果有错误会打印出来。

    4.找不到无法加载主类

    一般是相对路径问题,打印一下路径,检查是否正确。

    5.crontab调用时,自己是检测不到jJAVA_HOME的,需要在脚本里加上 source /root/.bash_profile,这样才能找到你的JAVA_HOME。

      

     

  • 相关阅读:
    虚拟机中硬盘扩展方法
    ubuntu postgresql install
    vim python
    oe7报表的中文乱码
    文件导入 import
    How do I list user defined types in a SQL Server database
    修改表结构
    查询数据库中所有的表和数据库架构
    Dev chartControl添加提示层信息
    最简单的日志
  • 原文地址:https://www.cnblogs.com/lingluo2017/p/10161301.html
Copyright © 2020-2023  润新知