您的位置:首页 > 运维架构 > Tomcat

C#实现看门狗监控tomcat运行、定制任务计划

2015-07-23 17:54 926 查看

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的环境变量

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: