Abrufen der PID des Prozesses vom Bash-Shell-Befehl aus der MONO C # -App

869
KernelPanic

Ich habe folgenden Linux-Terminalbefehl:

ps -aef | grep -v grep | grep 'TestService.exe' | awk '' 

die von Linux - Terminal funktioniert gut und retreives PIDgesuchten Verfahren, zum Beispiel Ausgabe lautet: 5532. Ich muss jedoch den oberen Befehl von der Mono C#Anwendung mit folgendem Code ausführen:

Process proc = new Process { StartInfo = new ProcessStartInfo { FileName = "/bin/bash", Arguments = string.Format("-c ps -aef | grep -v grep | grep '' | awk '{}'", p), UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = false } }; 

Das ist (fast) identisch mit dem Befehl, der vom Terminal gestartet wird. Die Ausgabe lautet jedoch:

testuser+ 2184 2160 0 11:43 pts/0 00:00:03 /usr/local/bin/mono-sgen /home/testuser/testuser/MONO/cs/src/testApp/bin/Debug/TestService.exe 

aber ich brauche nur PIDSpalte, dh PID eines Prozesses . Warum unterscheidet sich die Ausgabe?

1

1 Antwort auf die Frage

1
Nifle

Du musst dem entkommen $, so

/bin/bash -c "ps -aef | grep -v grep | grep '' | awk '{}'" 

Wenn Sie nicht $2zu früh von der Shell interpretiert werden und am Ende so aussehen:

/bin/bash -c "ps -aef | grep -v grep | grep '' | awk '{}'" 

und dies wird nur die gesamte Eingabezeile drucken