精华内容
下载资源
问答
  • windows进程监控

    千次阅读 2018-06-12 17:36:28
    最近开发一个进程监控的服务,由于对windows api不熟,所以折腾了小两周才完全跑通,特记录一下1 由于需求需要根据进程名来进行监控,所以首先要根据进程名来获取进程句柄(同名进程可能有多个,比如,起了多个...

    最近开发一个进程监控的服务,由于对windows api不熟,所以折腾了小两周才完全跑通,特记录一下

    1 由于需求需要根据进程名来进行监控,所以首先要根据进程名来获取进程句柄(同名进程可能有多个,比如,起了多个notepad.exe)
    //通过进程名获取进程句柄集
    // 返回值为 同名进程个数(不超过20个)
    int getProcessHandle(LPCWSTR lpName, HANDLE pH[20])  
    {
    int num = 0;
        HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);  
        if (INVALID_HANDLE_VALUE == hSnapshot)
        {  
            return 0;
        }  
        PROCESSENTRY32 pe = { sizeof(pe) };
        BOOL fOk;  
        for (fOk = Process32First(hSnapshot, &pe); fOk; fOk = Process32Next(hSnapshot, &pe))  
        {

    if (!_tcsicmp(pe.szExeFile, lpName))
            {
    pH[num++] = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pe.th32ProcessID);
            }
    // 同名进程超过20个,返回20个
    if (num > 20)
    {
    num = 20;
    break;
    }
        }
    CloseHandle(hSnapshot);
        return num;  
    }

       根据进程句柄来获取程序开始运行的时间(多个同名进程里最早的一个)

                   earliesttime = COleDateTime::GetCurrentTime();
    for (i = 0; i < number; i++)
    {
    GetProcessTimes(hProcess[i], &ftCreation, &ftExit, &ftKernel, &ftUser);
    if ((earliesttime - (COleDateTime(ftCreation))).GetTotalSeconds() > 0){
    earliesttime = ftCreation;
    }

    }

       创建子线程,来监听该程序名的所有进程句柄的结束事件,将结束时间写入redis

     for (int j = 0; j < number; j++){
    pDataArray[ncount]->hProcess[j] = hProcess[j];
    }
    pDataArray[ncount]->procname = _strdup(name);
    pDataArray[ncount]->num = number;

    hThreadArray[ncount] = (HANDLE)_beginthreadex(NULL, 0, &MyThreadFunction, pDataArray[ncount], 0, NULL);

    unsigned int _stdcall MyThreadFunction(LPVOID lpParam)
    {
    char endtime[BUFFERSIZE] = "";
    char buffer[BUFFERSIZE] = "";
    char buff[BUFFERSIZE] = "";
    HANDLE hProcess[20];
    int number = 0;
    int flag = 1;
    DWORD nret;
    redisContext* c;
    COleDateTime timeCreation, timeNow;

    PMYDATA  pDataArray = (PMYDATA)lpParam;

    // printf("thread--------------name=[%s]-----tid=[%ld]\n", pDataArray->procname, GetCurrentThreadId());

    if (pDataArray->num > 1)
    {
    nret = WaitForMultipleObjects(pDataArray->num, pDataArray->hProcess, TRUE, TIMEOUT);
    }
    else if (pDataArray->num == 1)
    {
    nret = WaitForSingleObject(pDataArray->hProcess[0], TIMEOUT);
    }

    switch (nret)
    {
    case WAIT_OBJECT_0:
    // 所有同名进程都结束,则写endtime
    number = getProcessHandle(T2W((LPTSTR)CString(pDataArray->procname).GetBuffer(NULL)), hProcess);
    if (!number)
    {
    sprintf_s(buff, BUFFERSIZE, "%s", removeSuffix(pDataArray->procname, ".exe"));
    _strlwr_s(buff, BUFFERSIZE);
    timeNow = COleDateTime::GetCurrentTime();
    sprintf_s(endtime, "%02d:%02d:%02d", timeNow.GetHour(), timeNow.GetMinute(), timeNow.GetSecond(), BUFFERSIZE);
    sprintf_s(buffer, "rpush %s|%s|%04d-%02d-%02d endtime|%s", mac, buff, timeNow.GetYear(), timeNow.GetMonth(), timeNow.GetDay(), endtime);
                            //    将进程结束时间写入 redis
    c = redisConnect(redisip, redisport);
    if (c->err)
    {
    printf("Connect to redisServer failed:%s\n", c->errstr);
    redisFree(c);
    return -1;
    }
    if (rpushString(c, buffer))
    {
    printf("setString error [%s]\n", buffer);
    }
    redisFree(c);
    }
    break;
    case WAIT_TIMEOUT:
    // 超时,退出
    ;;
    break;
    case WAIT_ABANDONED_0:
    ;;
    break;
    case WAIT_FAILED:
    // 函数调用失败,比如传递了一个无效的句柄
    ;;
    break;
    }
    return 0;

    }

      将监控事件做成定时事件,30秒跑一次

        timer_id = timeSetEvent(TIMEOUT+1000, 1, (LPTIMECALLBACK)onTimeFunc, DWORD(1), TIME_PERIODIC);

      套上SCManager框架,将程序做成服务,把状态传入SCManager

    展开全文
  • windows进程监控工具Process Monitor

    千次阅读 2019-09-18 17:39:43
    监控工具,可以监控所有注册表/文件/进程的所有操作 转载于:https://my.oschina.net/tomlin/blog/3064550...

    该监控工具,可以监控所有注册表/文件/进程的所有操作

    转载于:https://my.oschina.net/tomlin/blog/3064550

    展开全文
  • java调用bat:如果要和Runtime创建的进程交互,必须自己写交互的代码,例如通过socket,两个java进程互相通信。 import java.io.IOException; public class Main { public static void main(String[] args){ try { ...


    java调用bat:如果要和Runtime创建的进程交互,必须自己写交互的代码,例如通过socket,两个java进程互相通信。

    import java.io.IOException;
    
    public class Main {
    
    public static void main(String[] args){
    try {
    Runtime rt = Runtime.getRuntime();
    rt.exec("cmd.exe /c start c:\\1.bat");
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    /* 1.bat的内容
    * @echo off
    * echo lsd>>c:\lsd.txt
    *
    * */
    }
     



    java监控windows下的某一进程是否关闭:应为这里直接调用的操作系统带的命令,所以可以直接用getInputStream()来获得操作系统的反馈信息。如果调用命令启动另一个java应用,两个java应用互相交互,则getInputStream()就没用了。

    ProcessBuilder pb = new ProcessBuilder("tasklist");
    try {
    Process p = pb.start();
    BufferedReader rb = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line;
    String storeLine="";
    while((line=rb.readLine())!=null){
    if(line.indexOf("eclipse.exe")!=-1)//过滤进程eclipse.exe的信息
    storeLine = line;
    System.out.println(line);
    }
    //获取进程的pid号
    if(storeLine!=""){
    int beginIndex = storeLine.indexOf("exe");
    int endIndex = storeLine.indexOf("Console");
    String pid = storeLine.substring(beginIndex+3, endIndex).trim();
    System.out.println("this process id is "+pid);
    }else{
    System.out.println("this process is not exist");
    } 
     

     

     

    展开全文
  • java 监控 windows进程

    2009-07-09 23:04:34
    现在需要用java写个进程监控和网络监控,Snmp4j能实现网络的监控 Snmp4j能否监控制定的...我要监控的是windows进程 好像可以先用c#写个dll文件 在用jni调用 不过这样感觉很费事 ,不知到有没有什么更好的方法。
  • Linux下面似乎有守护进程的概念,Windows下面其实也很简单,dos批处理就可以搞定:-) 需要了解如下几个命令,tasklist +find,ping。tasklist是列出所有进程,可以指定只列出某用户的进程,用...

    相信大家都有这样的需求,某程序(进程)在运行的时候可能挂掉,需要去监控该程序,并在它挂掉的时候重启之,确保该程序能一直运行。比如土net就经常挂,需要监控程序去监控。Linux下面似乎有守护进程的概念,Windows下面其实也很简单,dos批处理就可以搞定:-)

    需要了解如下几个命令,tasklist +find,ping。tasklist是列出所有进程,可以指定只列出某用户的进程,用/FI参数过滤。find/C可以去tasklist的结果中查找指定进程名,并输出个数。

    还有个问题是如何设置每隔一段时间去检测进程是否在运行,我用的是ping命令自带的延迟参数-w,将IP地址设置成一个空地址,比如0.0.0.1,这样该命令会一直ping,直到一定n*w毫秒后才返回(n和w分别是参数-n和-w指定的值)。

    示例程序如下,红色部分需要根据需求进行替换,enjoy it!


    :RESTART
    tasklist /FI "username eq bigtree" |find /C "java" >temp.txt
    set /p num= < temp.txt
    del /F temp.txt
    echo %num%

    if "%num%" == "0" 

           start /D"E:Userbigtreeprogramcomparison"pos

    ping -n 10 -w 2000 0.0.0.1> temp.txt
    del /F temp.txt
    goto RESTART
    注意1:goto语句是将监控程序设置成死循环,哇咔咔。
    注意2:可以用start /D pathprogram去异步调用program程序,也就是不等program指定完毕就执行下面的语句,因此可以设置固定间隔(n*w毫秒)去监测。
           如果用callprogram则是同步调用,会等待program执行完毕,这样延迟就用不着了。

    转载于:https://www.cnblogs.com/sunyllove/p/11225860.html

    展开全文
  • 说明: 输入一个进程名字,输出该进程...这里需要用到windows提供的几个API函数:CreateToolhelp32Snapshot、Process32First和Process32Next。 函数的简单介绍: HANDLE WINAPI CreateToolhelp32Snapshot( __in ...
  • 紧接上文,接下来就是获取进程的句柄数,句柄就是windows进程中各种对象的标识,一般应用程序会通过句柄来执行各种操作,通过监控设备的句柄,我们可以大致判断出进程是否存在异常,比如句柄泄漏,会导致系统卡顿,...
  • 如何用windows自带的工具去监控某一进程对服务器资源的使用情况 通常情况下,我们会用LR去监控服务器的资源从而得到对系统并发时系统的资源使用情况。那么我们又如何使用windows自带的工具去对某一进程实现监控,...
  • 通过Hook API调用打造进程监控程序

    千次阅读 2010-04-13 11:30:00
    *(收藏)http://hi.baidu.com/linuxetc/blog/item/1b91c813b017e4035baf53a7.htmlHook(钩子)是Windows消息处理过程中的一个监视点,应用程序可以通过Hook拦截Windows消息,这样就可以捕捉到目标进程的消息,并做...
  • windows监控进程的脚本 批处理实

    千次阅读 2014-02-12 10:31:47
    [转载]windows监控进程的脚本 (2012-06-09 23:27:43) 转载▼ 标签: 转载   原文地址:windows监控进程的脚本作者:澶ф爲 相信大家都有这样的需求,某程序(进程)在运行的时候...
  • Windows监控并重启某个进程脚本 某程序(进程)在运行的时候可能挂掉,需要去监控该程序,并在它挂掉的时候重启之,确保该程序能一直运行。 比如土net就经常挂,需要监控程序去监控。 Linux下面似乎有守护进...
  • windows监控并重启某个进程 脚本

    千次阅读 2013-12-16 19:48:31
    Linux下面似乎有守护进程的概念,Windows下面其实也很简单,dos批处理就可以搞定 :-)需要了解如下几个命令,tasklist + find,ping。tasklist是列出所有进程,可以指定只列出某用户的进程,用/FI参数
  • windows下,可以用简单的bat实现守护进程的功能,如果dump掉就重新拉起来,百度下就能查到,举个例子: @echo off ::检测时间间隔,单位:秒 set _interval=5 ::需要守护的进程名称 set _processName=print_...
  • Linux用户态进程如何监控内存被写事件

    千次阅读 多人点赞 2019-06-01 08:23:33
    上周了解到一个很好玩的问题,即 如何捕获到“一块...正好,也碰到了一个JVM踩内存的问题,就思考了一把,完成了一个简单的demo,可以 监控每一个内存写事件。 至于内存的内容是否变成特定的值,那就在每一次捕获到...
  • Windows系统监控

    千次阅读 2017-05-25 00:18:53
     该监控系统使用J-Interop开源框架调用WMI来实现。Windows管理规范(WMI)是微软对来自分布式管理任务组(DMTF)基于Web的企业管理(WBEM)和通用信息模型(CIM)标准的实现。WMI用于访问Windows系统,应用,网络,...
  • //使用ACE监控启动进程进程崩溃后自动重启(windows/linux通用) 原理: 监护程序使用子进程的方式启动各个进程, 子进程退出时,监护程序能够得到相应的退出信号, 从而在子进程退出后,在重新启动相应的子进程...
  • windows进程详解

    千次阅读 2011-11-18 08:14:35
    xp系统进程信息 系统进程 [system process] alg.exe csrss.exe ddhelp.exe dllhost.exe explorer.exe inetinfo.exe internat.exe kernel32.dll lsass.exe mdm.exe mmtask.tsk mprexe.exe msgsrv32.exe ...
  • 管道监控监控
  • Process Monitor(以下简称 Procmon)是一种进程监控工具,为开发者提供了简便有效的方式来跟踪系统调用(syscall)活动。该工具能够帮助诊断程序崩溃、资源占用率过高,甚至是潜在的恶意感染等问题。 Sysinternals...
  • 通过SNMP实现进程监控进程路径

    千次阅读 2018-07-04 15:36:06
    通过snmp实现进程监控代码: SNMP监控OID的 WALK 请求方式: /** * */ package com.hfvast.monitor.snmp; import java.io.IOException; import java.util.Vector; import org.apache.log4j.Logger; import org....
  • C#进程监控程序

    2010-11-09 21:50:00
    我现在想监控一个进程,如果这个进程在10秒钟内串口没有收到数据,然后我就关闭进程,然后再重新打开进程。请问如何实现?最好是有代码的!!多谢了!这个10秒该如何计数呢?? 这个最好在进程内部去监控...
  • Windows进程小结

    千次阅读 2009-05-01 22:48:00
    lsass.exe 进程名称: Local Security Authority Service 进程名称: lsass.exe是一个系统进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略。注意:lsass.exe也有可能是Windang.worm、irc.ratsou.b...
  • windows 进程作业对象 管理一组 进程

    千次阅读 2012-07-19 16:48:12
    通常,必须将一组进程当作单个实体来处理。例如,当让Microsoft Developer Studio为你创建一个应用程序项目时,它会生成C l . e x e,C l . e x e则必须生成其他的进程(比如编译器的各个函数传递)。如果用户想要...
  • linux进程监控及管理

    千次阅读 2017-05-10 21:18:17
    进程状态 进程类型 进程状态 进程的分类 Linux 系统状态的查看及管理工具 进程相关 pstree ps默认显示当前终端中的进程 字段含义 STAT 进程状态 常用组合 进程优先级调整 nice OPTION COMMAND ARG 执行时指定 renice...
  • 1. Dump文件的用途Dump文件, 主要用于诊断一个进程的运行状态,尤其是碰到崩溃(Crash)或者挂起(hang)不响应时,需要分析它的工作状态. 除了平时常见的attach到这个进程, 分析Dump文件就成了一个重要的手段了.相信一些...
  • 转载请注明出处:帘卷西风的专栏(http://blog.csdn.net/ljxfblog) 本周开始,新手游进行删档封测阶段,前两天... 实现原理主要是使用linux提供的crontab机制,定时查询服务器进程是否存在,如果宕机则处理我们预设的...
  • 动态监控进程

    千次阅读 2018-08-17 08:25:13
    1. 动态监控进程 介绍: top与ps命令很相似,它们都用来显示正在执行的进程top与ps最大的不同之处,在于top 在执行一段时间可以更新正在运行的的进程 基本语法: top [选项] 选项说明: 操作 功能 -d 秒数 指定...
  • MFC 进程监控

    千次阅读 2013-01-22 15:05:28
    1、获得电脑中所有运行的进程:  #include "TLHELP32.H"  HANDLE Snapshot; Snapshot=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); PROCESSENTRY32 processListStr; processListStr.dwSize=sizeof...
  • 最全的Windows进程详解!

    千次阅读 2012-12-22 20:16:59
    最全的Windows进程详解!  最全的Windows进程详解!  xp系统进程信息  系统进程  [system process] alg.exe csrss.exe  ddhelp.exe dllhost.exe explorer.exe  inetinfo.exe internat.exe ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,095
精华内容 20,438
关键字:

windows进程调用监控