windows系统定时重启自定义exe程序
工作需要, Windows系统定时重启自定义exe程序. 写了如下程序, 按照说明(readme.txt)修改批处理文件中的四个参数即可:
1.readme.txt
第一个参数:进程名(不用带exe)
第二个参数:大屏exe路径
第三个参数:定时任务循环时间(秒)
第四个参数:结束与重启的间隔时间(毫秒)
2.批处理文件dp.bat(注意:第三个参数单位是s,第四个参数单位是ms)
java -jar dp.jar Foxmail D:\\Tools\\Foxmail\\Foxmail.exe 10 5000
pause
3.task.java(将工程导出为可执行jar包dp.jar, 我的运行环境为jdk1.7,不过和jdk关系应该不大,没测试...)
package com.kd; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; /**
* @author liangyadong
* @date 2017年10月1日 下午1:51:58
* @version 1.0
*/
public class task {
static String cmdStr1=""; //根据pid 结束进程
public static void killProcessByPidName(String pidName) throws Exception {
Runtime.getRuntime().exec("taskkill /F /IM " + pidName + ".exe"); } //根据pidname,exe路径 启动进程
public static void start(String filepath, String pidName) throws Exception {
Runtime.getRuntime().exec("cmd.exe /c start "+filepath); }
//获取所有进程
public static List getCurrOsAllPidNameSet(String pidname) throws Exception {
Set<String> pidNameSet = new HashSet<>();
List l = new ArrayList<>();
InputStream is = null;
InputStreamReader ir = null;
BufferedReader br = null;
String line = null;
String[] array = (String[]) null;
try {
Process p = Runtime.getRuntime().exec("TASKLIST /NH /FO CSV");
is = p.getInputStream();
ir = new InputStreamReader(is);
br = new BufferedReader(ir);
while ((line = br.readLine()) != null) {
array = line.split(",");
line = array[0].replaceAll("\"", "");
line = line.replaceAll(".exe", "");
line = line.replaceAll(".exe".toUpperCase(), "");
if(line.startsWith(pidname)){
l.add(line);
}
}
} catch (IOException localIOException) {
throw new Exception("获取系统所有进程名出错!");
} finally {
if (br != null) {
br.close();
}
if (ir != null) {
ir.close();
}
if (is != null) {
is.close();
}
} return l;
}
public static void main(String[] args) {
final ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
final String pidname = args[0];// 参数1 -- 进程名称
final String cmdStr1 = args[1];// 参数2 -- exe 路径
int time = Integer.parseInt(args[2]);// 参数3 -- 定时任务循环间隔(秒)
final Long time2 = Long.parseLong(args[3]);// 参数4 -- 结束进程与重新启动进程直接的间隔(毫秒)
System.out.println("----进程名称:"+pidname);
System.out.println("----exe 路径:"+cmdStr1);
System.out.println("----定时任务循环间隔(毫秒):"+time);
System.out.println("----结束进程与重新启动进程直接的间隔(毫秒):"+time2);
Runnable runnable = new Runnable() {
public void run() {
System.out.println();
System.out.println("--------------------------"+new Date()+"新任务开始------------------");
try {
System.out.println(new Date()+"开始结束进程:"+getCurrOsAllPidNameSet(pidname));
Thread.sleep(time2);
killProcessByPidName(pidname);
System.out.println(new Date()+"开始启动进程"+getCurrOsAllPidNameSet(pidname));
start(cmdStr1,pidname);
System.out.println(new Date()+"当前进程:"+getCurrOsAllPidNameSet(pidname));
System.out.println("--------------------------"+new Date()+"新任务结束------------------");
System.out.println();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
killProcessByPidName(pidname);
service.shutdown();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("--------------------------"+new Date()+"任务异常------------------");
System.out.println();
}
}
};
service.scheduleAtFixedRate(runnable, 0, time, TimeUnit.SECONDS); } }
windows系统定时重启自定义exe程序的更多相关文章
- Windows系统定时备份MySQL数据库
当一个网站投入使用时,定期备份数据库是必要的事.那么,在Windows系统上,我们该如何做呢? 如下语句可以实现备份及还原MySQL数据库: 备份MySQL数据库 mysqldump -uroot - ...
- windows系统下c语言暂停程序
原文:windows系统下c语言暂停程序 windows系统下,很多C语言初学者的调试时,往往没看到结果程序就退出了,据我所知的方法主要有以下几种 方法一: #include int main() { ...
- windows系统下,在C#程序中自动安装字体
在Windows系统中,原有自带的字体样式有限,有时候我们的程序会使用到个别稀有或系统不自带的字体.因此我们需要将字体打包到程序中,当程序启动时,检测系统是否有该字体,如果没有则安装该字体,也可以动态 ...
- 将Windows系统编译的.NET Core程序发布到Ubuntu系统
在可移植方面.NET Core应用程序分为两种,Portable application(便捷,需要目标机器安装.NET Core Runtime)和Self-contained applicatio ...
- Windows 系统定时自动重启
1.创建新文本并输入 shutdown -r -t 0 保存成.bat文件 2.创建系统任务计划 2.1 在开始中打开[任务计划程序] 2.2 新建创建任务计划目录 2.3 在新目录下新建任务计划即可 ...
- windeployqt.exe 发布windows下qt产生的exe程序
以官方 Qt 5.4.0+MinGW 开发环境为例,从开始菜单-->Qt 5.4.0-->5.4-->MinGW 4.9 (32-bit)-->Qt 5.4 for Deskt ...
- Windows系统使用运行框运行程序
配置步骤 1. 在非系统盘创建一个新文件夹,自定义名称.将需要使用运行框启动的程序或文件放入文件夹,并将其更改为自己容易记忆的名称 2. 创建环境变量 右击 "此电脑" → &qu ...
- Windows系统定时重开或者关机
at 6:00 /every:M,T,W,Th,F,S,Su cmd /c shutdown -r -t 60 (每天早上6点自动重启一次) at 0:00 /every:M,T,W,Th,F,S,S ...
- linux系统定时重启tomcat
#touch auto-start.sh [root@Linux opt]# echo $LANGen_US.UTF-8 #vim auto-start.sh #!/bin/sh export LAN ...
随机推荐
- Android中RelativeLayout和LinearLayout性能分析
先看一些现象吧:用eclipse或者Android studio,新建一个Activity自动生成的布局文件都是RelativeLayout,或许你会认为这是IDE的默认设置问题,其实不然,这是由 a ...
- Python3.6学习笔记(三)
面向对象编程 面向对象编程 Object Oriented Programming 简称 OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程 ...
- kafka存储机制
kafka存储机制 @(博客文章)[storm|大数据] kafka存储机制 一关键术语 二topic中partition存储分布 三 partiton中文件存储方式 四 partiton中segme ...
- C语言:结构体和联合体(共用体)
结构体:struct 1.结构体变量的首地址能够被其最宽基本类型成员的大小所整除. 2.结构体每个成员相对于结构体首地址的偏移量(offset)都是成员的整数倍. 3.结构体的总大小为结构体最宽基本类 ...
- 认识Mac中的那些符号
今天看到这篇文章,讲了Mac中的各种符号,还是很不错的. http://www.cnblogs.com/jimcheng/articles/4156268.html
- go语言基础之map介绍和使用
1.map介绍 Go语言中的map(映射.字典)是一种内置的数据结构,它是一个无序的key—value对的集合,比如以身份证号作为唯一键来标识一个人的信息. 2.map示例 map格式为: map[k ...
- 关于DLL文件和EXE文件不在同一目录下的设置【转】
https://www.cnblogs.com/chaosimple/archive/2012/08/13/2636181.html 关于DLL文件和EXE文件不在同一目录下的设置 在开发程序结束后, ...
- iOS开发-UITableView常用方法
UITableView常用来展示数据,类似于Android中的ListView,相对于Android中的ListView而言,UITableView的实现是非常简单,继承UITableViewData ...
- 【WCF】HTTP 无法注册 URL 进程,不具有此命名空间的访问权限
背景 如题,在运行WCF宿主主机时,出现了问题. 捕获异常为:HTTP 无法注册 URL http://+:8000/WCF/.进程不具有此命名空间的访问权限(有关详细信息,请参见 http: ...
- Mac 显示和隐藏文件
显示和隐藏文件 显示Mac隐藏文件的命令: defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏Mac隐藏文件的命令: def ...