2013-09-27 56 views
0

我在使用Mono運行時,Ubuntu服務器和C#代碼運行進程時遇到問題。獲取Mono運行時正在運行進程

我試着使用獲取進程列表:

Process.GetProcesses().ToList<Process>().ForEach((s) => { 
      Console.WriteLine(s.ProcessName); 
     }); 

而且我得到以下列表:(續)

rsyslogd將Perl單SMBD sshd的慶典須藤

所以,我想我有和執行Java Jar類似的問題。我可以看到單聲道 控制檯正在運行,但我無法讓他的子進程運行,因此我無法開發另一個 應用程序來充當監視器。我需要檢查應用程序是否正在全部運行。

我設法實現它做/斌/ bash命令:

Process.Start("/bin/bash"," -c 'ps -aux | grep Watcher'"); 

所以我得到一個有效的輸出:

根25597 0.0 0.4 23540 9132? Sl Sep26 0:07 mono /var/lib/sarg/Watcher.exe root 29226 0.0 0.0 5184 1112 pts/0 S + 15:04 0:00/bin/bash -c ps -aux | grep的觀察者根29228個 0.0 0.0 4392 820 PTS/0 S + 15:04 0:00 grep的觀察者

,你可以看到,這一行:

的/ var/lib中/ SARG /觀察者。 exe根

重申我的過程ir運行,但這不是很優雅,我必須解析 的輸出。

我會解析它如果沒有其他選項,但也許有一個,我不知道它。

回答

0

測試一些代碼,使用後:

Proccess[] Proc =Process.GetProcessesByName("mono"); 

我終於達到了他的堆棧跟蹤異常:

Unhandled Exception: System.NotImplementedException: The requested feature is not implemented. 
    at System.Diagnostics.Process.get_SessionId() [0x00000] in <filename unknown>:0 
    at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:get_SessionId() 
    at ProcWatch.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 
[ERROR] FATAL UNHANDLED EXCEPTION: System.NotImplementedException: The requested feature is not implemented. 
    at System.Diagnostics.Process.get_SessionId() [0x00000] in <filename unknown>:0 
    at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:get_SessionId() 
    at ProcWatch.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0 

請求功能沒有實現。因此,使用.NET框架無法恢復單一子進程。我用shell命令這樣做:

Process.Start("/bin/bash"," -c 'ps -aux | grep Watcher'"); 
0

嘗試使用Process.GetProcessesByName("Watcher"),這似乎適用於我。

+0

我已經試過了執行的應用程序的名稱。不工作:/。輸出是0進程。如果我使用「mono」作爲名字,它會很好用 –

1

Process.GetProcessesbyName內部調用Process.GetProcesses(「」),然後對結果進行過濾的匹配請求processName

的問題是,該過程被稱爲‘單’不是‘守望者’......

你永遠不會使用「watcher」按名稱查找進程。你必須得到ProcessesByName(「mono」)。