最近遇到一个问题,一个java入库程序经常在运行了几个小时之后消息无法入库,由于已经没有研发人员来维护这个程序了,故此只能每隔一段时间来重启这个程序以保证一直有消息入库。
但是谁也不能保证一直有人去看这个程序,并且晚上也不可能一直有人看着他,所以我就想着必须要有一个办法,让系统定时结束这个进程并且再重新启动程序。
答题思路就是使用cmd命令结束进程,并且使用计划任务启动程序。
下面我来为大家演示下如何我是如何操作的。
环境win2012系统,异常程序为一个java程序,调用java.exe进程。
1、新建一个bat批处理文件,这个文件的目的是输入一段cmd命令,在cmd中查找并结束指定的任务进程。
taskkill命令是用来结束任务进程的,/F用来强制杀进程,/IM是用来指定任务进程名字。
这条命令连起来的意思是强制杀死名字为java.exe的进程,这里要主要的是,用这种方式来杀进程,会把所有名字为java.exe的进程全部杀死,而不是杀死某个,这点大家要格外注意。
然后将这个txt文件的扩展名修改为.bat即可,存放起来备用。
2、打开计划任务功能,新建一个计划任务。注意,不要第一个,要选第二个“创建任务”。
输入计划任务的名称,选择要执行计划任务的用户,这里千万不要选择“不管用户是否登录登录都要运行”,这会导致没有界面且任务不执行。
新建一个触发器,按着如下图方式设置,让这个计划任务每2个小时执行一次。
选择操作,新建2个操作动作。第一个是启动刚刚我们建立的一个bat批处理文件,用来杀死任务进程。第二个是用来启动需要运行的任务。
至此所以的设置完成,我们可以等待2个小时以后看下操作是否正常。