第一次写博客,写的不好还请见谅。

之前在Linux环境中想定期执行某个脚本,第一反应就是将这个task加入到crontab里(crontab的知识点这里就不具体介绍了),当然,这种做法一般情况下是可行的。但是,当你发现,你没有编辑crontab权限,或者你所用的用户不在可执行crontab里面任务的列表时,怎么办呢?

我的解决方法是后台跑Java程序,利用Java程序定时执行shell脚本。

如何在Java代码中定时执行shell脚本?引用下面这位朋友在Quora的回答。

Terrence Cox, Trainer at Linux Academy (http://linuxacademy.com)

There are two methods that work generally well depending on what kind of flexibility you need within your code and for the script you need to call. Here are examples:

 
  1. String[] cmdScript = new String[]{"/bin/bash", "path/to/myScript.sh"};
  2. Process procScript = Runtime.getRuntime().exec(cmdScript);

If you only need to call your script without any other parameters, that is the most direct method. Although you can add parameters directly after that name of the script if needed, complex parameters (spaces, special characters, etc) can cause formatting issues and lead to bugs.

If you want to be able to debug easier and keep your parameters separate, you can use the ProcessBuilder class, something like:

 
  1. Process procBuildScript = new ProcessBuilder("path/to/myScript.sh", "myArg1 myArg2").start();

我用的是第一种方法Runtime,下面贴上我的代码,很简单。

TimeTask.java:

import java.util.Calendar;
import java.util.Date;
import java.util.Timer;public class TimeTask {Timer timer;public Date getTime() {Calendar calendar = Calendar.getInstance();  calendar.set(Calendar.HOUR_OF_DAY, 1);   //设置“时”为1,HOUR_OF_DAY代表24小时制
calendar.set(Calendar.MINUTE, 10);          //设置“分”为10calendar.set(Calendar.SECOND, 00);        //设置“秒”为0Date time = calendar.getTime(); return time;}public TimeTask(){  Date time = getTime();  System.out.println("The schedule time is:" + time);  timer = new Timer();  timer.schedule(new TimeTaskThread(), time);      //创建定时执行的任务}  public static void main(String[] args) {  new TimeTask();  }  }

TimeTaskThread:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.TimerTask;public class TimeTaskThread extends TimerTask {@Overridepublic void run() {// TODO Auto-generated method stubString[] cmdScript = new String[]{"/bin/bash", "/data/enovia_dev/sanitytest/EAICheck/EAICheck.sh"};   //脚本位置及类型try {Process procScript = Runtime.getRuntime().exec(cmdScript);   //执行脚本} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();System.out.println("Error...");}System.out.println("TimeTaskThread end!");} }

Java程序定时执行shell脚本相关推荐

  1. Linux 定时执行shell 脚本

    2019年第 85 篇文章,总第 109 篇文章 本文大约2000字,阅读大约需要6分钟 crontab 可以在指定的时间执行一个shell脚本以及执行一系列 Linux 命令. 定时执行shell ...

  2. Android启动过程中执行一个C语言的应用程序或者执行shell脚本

    Android启动过程中执行一个C语言的应用程序或者执行shell脚本 一.Android启动过程中去对系统做一些设置,如修改某些文件夹的属性和文件的权限,可在init.rc中增加service执行s ...

  3. linux定时执行shell脚本

    linux定时执行shell脚本 需求:每分钟检查下文件是否存在 解决思路: 1.编写shell脚本,检查文件是否存在,存在在文件中记录yes,不存在记录no 2.将脚本加入linux定时任务cron ...

  4. Windows 任务计划程序定时执行 powershell 脚本

    由于需要进行一些特殊操作,打算使用 powershell 来写脚本,需要Windows 任务计划程序定时执行. 怎么在Windows 任务计划程序中执行powershell脚本?? 做一个简单测试:本 ...

  5. linux脚本定时执行,Shell脚本实现每个工作日定时执行指定程序

    我们可能会遇到这样的情景:必须在每个工作日定时执行 原理很简单,Shell脚本内部每隔1秒查询一次当前时间.日期以及星期数,当检测到当前星期数week非0或6(0代表星期天,6代表星期六)且时间cur ...

  6. linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本

    #!/bin/sh# 该脚本为Linux下启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的jav ...

  7. java -jar 停止_推荐:Linux启动Java程序jar包Shell脚本

    每次启动Java程序jar包的时候,难道你还在手敲java -jar xxserver.jar--?边敲边想着都需要追加哪些参数? 今天就推荐给大家一个几乎通用的Shell脚本,它支持Java程序Ja ...

  8. linux 定时执行shell脚本 定时任务

    1 #!/bin/bash 2 step=1 3 for ((i=1;i<=60; i+=step)) 4 do 5 $(`/usr/local/php-5.6.22/bin/php /root ...

  9. Linux下定时执行shell脚本

    1.定义shell脚本 vi test.sh 录入要执行的命令 source /etc/profile source ~/.cshrcdate >> /opt/data.txt 保存退出, ...

最新文章

  1. 看动画轻松理解「链表」实现「LRU缓存淘汰算法」
  2. 人类评估已不是NLG的最佳标准,华盛顿大学提出全新观点,网友:那是评估人水平不行...
  3. 锚杆拉拔试验弹性模量计算_土钉、锚杆拉拔试验检测方案 - 图文 -
  4. 从搜索引擎到社交网络的艰难转变
  5. [置顶]       Mybatis技术(二) MyBatis-Spring
  6. linux修改ssh登陆端口号,Linux 6 修改ssh默认远程端口号的操作步骤
  7. 化工原理 (传热和设备)
  8. 使用OData API批量删除Marketing Cloud里的contact
  9. python处理字典的方法_python字典的常用操作方法小结
  10. k8s挂载目录_K8S中挂载目录引发的血案!
  11. foxit phantom pdf 7.3_Jpeg to Pdf Converter 3000批量将图片转为PDF的方法
  12. 微信小程序 - 基本学习资源
  13. (1)JavaScript入门
  14. mysql 视图view
  15. 8,888+ 字,彻底征服 Spring AOP!
  16. 谷歌Chrome浏览器保存网页为PDF
  17. matlab电路图powergui怎么用,使用matlab中的powergui对采集的数据进行谐波分析#实验日记#...
  18. Reservior Sampling(蓄水池采样) in Data Streams
  19. 孙溟㠭书画艺术《退步向前》
  20. Keras深度学习实战(39)——音乐音频分类

热门文章

  1. 零基础学素描nbsp;高考素描头像未…
  2. java while语句_Java while循环语句
  3. macOS/Linux 命令 - ssh、sshpass
  4. 赵丽颖人生第一次演讲——我小小的英雄主义,用行动证明坚持的意义
  5. 全新ThihkPHP开发聚合支付系统源码兼容所有易支付程序免费下载
  6. 2021临湘高考成绩查询,2021湖南地区高考查分时间
  7. C++中static成员
  8. 各个不同品牌水星路由默认密码
  9. html打包app方案,HBuilder开发APP(前端APP打包方案)
  10. Python之日期和时间