我是靠谱客的博主 彩色发夹,最近开发中收集的这篇文章主要介绍C#实现看门狗监控tomcat运行、定制任务计划2.指定看门狗程序的任务计划,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述


1. 主程序编写

这里以监控java webtomcat运行情况为例,使用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

此配置文件存放tomcatbin路径放在项目的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的环境变量



最后

以上就是彩色发夹为你收集整理的C#实现看门狗监控tomcat运行、定制任务计划2.指定看门狗程序的任务计划的全部内容,希望文章能够帮你解决C#实现看门狗监控tomcat运行、定制任务计划2.指定看门狗程序的任务计划所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部