我在使用 Mono 运行时、Ubuntu 服务器和 C# 代码运行进程时遇到问题。
我试图使用以下方法获取进程列表:
Process.GetProcesses().ToList<Process>().ForEach((s) => {
Console.WriteLine(s.ProcessName);
});
我得到以下列表:(恢复)
rsyslogd perl perl mono smbd sshd bash sudo
所以,我想我有一个与执行 Java Jar 类似的问题。我可以看到单声道控制台正在运行,但我无法让他的子进程运行,因此我无法开发另一个应用程序来充当监视器。我需要检查应用程序是否一直在运行。
我设法通过 /bin/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 Watcher root 29228 0.0 0.0 4392 820 pts/0 S+ 15:04 0:00 grep Watcher
如您所见,这一行:
/var/lib/sarg/Watcher.exe 根目录
重申我的进程正在运行,但这不是很优雅,我必须解析输出。
如果没有其他选项,我会解析它,但也许有一个,但我不知道。