获取MONO在GNU / Linux上执行的进程

时间:2014-10-15 04:58:18

标签: linux process mono

我正在使用MONO来执行一个应用程序。使用ps命令显示eihter processname MONO或CLI。 如何获取MONO执行的应用程序的名称?

示例:mono myApp.exe

我想知道,如果myApp.exe目前已被删除。最后,我想以编程方式进行检查。

干杯。

3 个答案:

答案 0 :(得分:2)

您通常会从shell脚本运行程序,并且可以使用-a标志来执行:

#!/bin/bash
exec -a VisibleName mono program.exe

答案 1 :(得分:0)

这是一个使用.NET / MONO函数的解决方案(无需调用本机DLL,也无需管道Shell输出):

  • 列出所有流程。
  • 如果进程名称包含MONO或CLI,则读取 该流程的命令行
  • 命令行应包含所有内容 需要用于识别您的应用程序的信息

     public static int process_count(string application_name)
    {
        int rc = 0;
        string cmdline = "";
    
        Process[] processlist = Process.GetProcesses();
    
        foreach (Process p in processlist)
        {
    
            cmdline = "";
    
            //Console.WriteLine("PID : " + theprocess.Id + " " + theprocess.ProcessName);
    
            if (p.ProcessName.Contains("mono"))
            {
                Console.WriteLine("PID : " + p.Id + " " + p.ProcessName + " " + p.MainModule.FileName);
                cmdline = File.ReadAllText("/proc/" + p.Id.ToString() + "/cmdline");
                Console.WriteLine("CMDLINE : "+cmdline);
            }
    
            if (p.ProcessName.Contains("cli"))
            {
                Console.WriteLine("PID : " + p.Id + " " + p.ProcessName + " " + p.MainModule.FileName);
                cmdline = File.ReadAllText("/proc/" + p.Id.ToString() + "/cmdline");
                Console.WriteLine("CMDLINE : " + cmdline);
            }
    
    
            if (cmdline.Contains(application_name))
            {
                Console.WriteLine("Found existing process: {0} ID: {1}", p.ProcessName, p.Id);
                rc++;
            }
        }
        return (rc);
    }
    

如何手动完成:

  • 调用ps -e以获取MONO或CLI的所有进程
  • 查找PID,例如2845
  • 显示命令行:cat / proc / 2845 / cmdline

新手注意事项:此方法不专用于Windows操作系统,因为它不支持/ proc文件系统的概念。

干杯

答案 2 :(得分:0)

看看

getting-mono-process-info

该解决方案使用相同的读取/ proc方法,但有更多选项。

干杯