我用java写了个定时工具沾沾自喜,结果发现小丑竟是我自己!

大家好,我是Spring小杨,一个有梦想的Java司机。

1.事件起因

服务器上的redis总是出问题,就是本来好好的,突然就挂了,报一大堆错误,可是每次重启就好了,很奇怪吧。

所以我想着做一个简单的小工具去定时重启。
在这里插入图片描述

2.taskkill命令

这个小工具的原理就是用java去执行系统命令,比如taskkill(windows系统里面的)。

比如,我现在启动了redis.exe

image

任务管理器里面是这样的。

image

我要关闭这个进程,就用taskkill命令。

taskkill /f /im redis-server.exe

image

可以看到,这个进程已经被干掉了。

3.如何重新启动应用

很简单,直接输入启动程序的全路径就可以了,比如我的是:

C:\Users\Administrator\Downloads\redis-64.3.0.503\redis-server.exe

image

启动成功!

4.导入Hutool

使用Hutool的目的是,方便我们进行定时任务的设计。

用idea创建项目

在这里插入图片描述
导入Hutool

在这里插入图片描述
在项目里面创建一个lib目录,把hutool工具包放进去,然后add As library。

我们需要用到Hutool提供的定时器工具类,需要一个配置文件,在src下面创建config目录,然后创建一个cron.setting

image

[com.task]
Main.test=0/1 * * * * ?

com.task是包名,Main是类名,test是方法名。

0/1 * * * * ? 是cron表达式,表示每隔1秒钟就执行一次, cron表达式 就是一种设置定时任务的专用表达式,如果不会写,可以在线生成。

https://cron.qqe2.com/

Main.java 代码如下:

package com.task;

import cn.hutool.cron.CronUtil;

public class Main {

    public void test(){
        System.out.println("just test ...");
    }

    public static void main(String[] args) {
        CronUtil.setMatchSecond(true);
        CronUtil.start();
    }
}

运行效果
在这里插入图片描述

5. RuntimeUtil

RuntimeUtil是hutool给我吗提供的命令行工具,它会根据系统来执行我们所设置命令。

步骤 1 命令行工具-RuntimeUtil

Hutool封装了JDK的Process类,用于执行命令行命令(在Windows下是cmd,在Linux下是shell命令)。

exec 执行命令行命令,返回Process对象,Process可以读取执行命令后的返回内容的流

execForStr 执行系统命令,返回字符串
execForLines 执行系统命令,返回行列表

步骤 2 restartRedis
之前我们只是写了一个test方法来测试,现在要编写正式的方法了,目的是定时重启redis服务器。

   /**
     * 重启Redis服务
     */
    public void restartRedis(){
        String str = RuntimeUtil.execForStr("taskkill /f /im redis-server.exe");
        System.out.println(str);

        //休息2秒钟,再重启Redis
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        RuntimeUtil.execForStr("C:\\Users\\Administrator\\Downloads\\redis-64.3.0.503\\redis-server.exe");
        System.out.println("Redis已经成功重启");
    }

步骤 3 Cron表达式
修改cron.setting,设置为每天早上6点重启Redis。

[com.task]
Main.restartRedis=0 0 6 * * *

6. 后话…

后来经过排查,原来是下载的redis有问题,重新换一个redis安装就没事了。。。

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

剽悍一小兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值