C#实现看门狗监控tomcat运行、定制任务计划
2015-07-23 17:54
926 查看
1.主程序编写
这里以监控java web的tomcat运行情况为例,使用VS建立Visual
C#控制台程序,主程序代码如下
【Program.cs】
【WatchDog.config】
此配置文件存放tomcat的bin路径放在项目的debug目录下
至此主程序编写完成,主要思想就是没30秒执行一次当前系统运行进程检查,如果发现java不存在了则调用生成的批处理文件启动tomcat服务。生成->生成WatchDog,可以在项目目录bin/debug中得到WatchDog.exe文件
如果感觉每次弹出cmd很烦,可以右键资源管理器的项目根目录->属性,修改控制台程序为windows应用程序
最后将得到WatchDog.exe以及WatchDog.config复制到C:/Windows/System32中(如果放在其他目录不方便定制计划任务)
1.主程序编写
这里以监控java web的tomcat运行情况为例,使用VS建立Visual
C#控制台程序,主程序代码如下
【Program.cs】
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Timers; namespace WatchDog { class Program { static void Main(string[] args) { FileStream fsi = new FileStream("WatchDog.config", FileMode.Open); StreamReader rd = new StreamReader(fsi, Encoding.Default); String tomcatPathString = rd.ReadLine(); rd.Close(); fsi.Close(); FileStream fso = new FileStream("WatchDog.bat", FileMode.Create); StreamWriter wr = new StreamWriter(fso, Encoding.Default); wr.WriteLine("call " + tomcatPathString + <a>\\\\startup.bat</a>); //wr.WriteLine("startup.bat"); wr.Close(); fso.Close(); Timer timer = new Timer(); timer.Elapsed += new ElapsedEventHandler(onTimer); timer.Interval = 30000; //30秒执行一次 timer.Enabled = true; timer.AutoReset = true; timer.Start(); while (true) { System.Threading.Thread.Sleep(100); } } public static void onTimer(Object source, ElapsedEventArgs e) { int flag = 0; System.Diagnostics.Process[] myProcess; myProcess = System.Diagnostics.Process.GetProcesses(); //Regex r = new Regex("java"); // 定义一个Regex对象实例 foreach (System.Diagnostics.Process process in myProcess) { //Match m = r.Match(process.ProcessName); // 在字符串中匹配 if ("java".Equals(process.ProcessName)) { flag = 1; } } if (flag == 0) { foreach (System.Diagnostics.Process process in myProcess) { //Match m = r.Match(process.ProcessName); // 在字符串中匹配 if ("cmd".Equals(process.ProcessName)) { process.Kill(); } } System.Diagnostics.Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.Arguments = "/c WatchDog.bat"; p.StartInfo.UseShellExecute = false; p.StartInfo.CreateNoWindow = true; p.Start(); } } } }
【WatchDog.config】
此配置文件存放tomcat的bin路径放在项目的debug目录下
至此主程序编写完成,主要思想就是没30秒执行一次当前系统运行进程检查,如果发现java不存在了则调用生成的批处理文件启动tomcat服务。生成->生成WatchDog,可以在项目目录bin/debug中得到WatchDog.exe文件
如果感觉每次弹出cmd很烦,可以右键资源管理器的项目根目录->属性,修改控制台程序为windows应用程序
最后将得到WatchDog.exe以及WatchDog.config复制到C:/Windows/System32中(如果放在其他目录不方便定制计划任务)
2.指定看门狗程序的任务计划
2.1. 控制面板->系统和安全->计划任务->创建基本任务(按照提示一步一步进行,详细操作步骤截图在下方)
2.2. 创建基本任务完成后,右键刚刚创建的任务->属性->常规(选择最下方的最高权限)
2.3. 右键刚刚创建的任务->属性->触发器(选中条目点击编辑设置每天每隔一小时检查一次程序是否启动)
2.4. 右键刚刚创建的任务->属性->设置(注意设置里面的几个复选框的选择方式,具体见下图)
2.5. 全部确定后点击运行即可
【附:】需要注意的是在计划任务的执行程序当前路径会被设定为C:/Windows/System32,所以最好将执行文件以及配置文件放在此目录下再定制任务计划。但是需要注意需要设置tomcat的环境变量相关文章推荐
- Tomcat各种配置
- Tomcat之——配置项目有虚拟路径
- 同一个tomcat添加多个项目的报webAppRootKey错问题
- tomcat配置301重定向
- tomcat中建立基于端口号的虚拟主机
- 查看tomcat版本
- 如何配置和使用Tomcat访问日志
- 一台windows服务器上安装配置两个自启动Tomcat服务
- 为tomcat设置基于主机名的虚拟主机并使其能在本机上运行的步骤
- win-server2008部署tomcat导致80端口被占用的原因分析
- TOMCAT 下部署 PHP
- 使用telnet测试tomcat的虚拟主机时出现“ No Host matches server name www.xxx.com”的错误
- tomcat之数据库连接池proxool详细配置
- eclipse中tomcat端口占用情况
- Nginx+tomcat配置集群
- tomcat配置多域名
- Tomcat的四种项目部署方式
- 在tomcat下部署drools 6.2.0 workbench
- [转]Maven实现直接部署Web项目到Tomcat7
- 5分钟排错-拯救躺枪的tomcat