Linux Crontab 定时执行shell脚本

7 篇文章 1 订阅
2 篇文章 0 订阅

前面的博客中,笔者说了,如何在shell脚本中执行maven生成的可执行jar,博客地址:maven 生成可执行jar并使用shell脚本运行

下面,笔者说下,如何使用Linux 中的Crontab来定时执行shell脚本,也是工作中实际遇到需要定时执行shell脚本,在这做个记录,以后可以方便查看,如果你也遇到类似的,可以做个参考。

打开上面的博客链接,可以看到有个HelloWorld.java类,修改类代码,如下

public class HelloWorld {
    public static void main(String[] args) throws Exception {
        String execDate= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
        System.out.print("start execute..." + execDate);
        Thread.sleep(3000); // 模拟程序执行时间
        System.out.println("Hello World");
        System.out.println("execute finish...");
    }
}

然后使用maven生成可执行jar,具体请参考上述提到的博客链接,编写shell脚本如下

#!/bin/bash
# FileName:helloworld.sh
# Author:harvey
start_time=`date +%s`
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$PATH
java -Xms512m -Xmx1024m -jar /root/data/jar/helloworld-jar-with-dependencies.jar
end_time=`date +%s`
elapse_time=$((${end_time}-${start_time}))
echo -e "\n exec jar takes ${elapse_time} seconds\n"

注意:shell脚本文件中要设置下java的环境变量,否则使用crontab定时执行脚本时回不起作用。

赋予shell脚本可执行权限

chmod +x helloworld.sh

使用crontab前,我们先来看下它如何使用,类似于spring 中的quartz

*****command
minutehourdaymonthweekcommand
星期command

minute: 表示分钟,可以是从0到59之间的任何整数。

hour:表示小时,可以是从0到23之间的任何整数。

day:表示日期,可以是从1到31之间的任何整数。

month:表示月份,可以是从1到12之间的任何整数。

week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

crontab 范例
每五分钟执行 /5 * * *

每小时执行 0 * * * *

每天执行 0 0 * * *

每周执行 0 0 * * 0

每月执行 0 0 1 * *

每年执行 0 0 1 1 *

输入如下命令,设置crontab定时执行shell脚本

crontab -e

输入字母i,进入插入模式,编写如下内容(一分钟执行一次),然后保存退出

*/1 * * * * /root/data/shellfile/helloworld.sh >> /root/data/log/helloworld.log

编辑完成后可以使用如下命令,来查看linux所有的中crontab定时任务

crontab -l

运行结果:

start execute...2018-01-24 13:53:01
Hello World
execute finish...
 exec jar takes 3 seconds

start execute...2018-01-24 13:54:01
Hello World
execute finish...
 exec jar takes 3 seconds

start execute...2018-01-24 13:55:01
Hello World
execute finish...
 exec jar takes 3 seconds
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值