2017-06-06 3 views
0

Ich habe ein Problem, das versucht, die PID von einem Befehl mit Zeit zu erhalten. Der Befehl, den ich verwenden ist:Holen Sie sich die PID aus dem Kindprozess

{ time cp ubuntu/ubuntu-16.04.2-desktop-amd64.iso 
ubuntucopia/$i-ubuntu-16.04.2-desktop-amd64.iso; } 
    2>> "logs/time.log" &  

Wenn ich jetzt $! verwenden, ich habe te PID von Zeit zu bekommen. Wie kann ich die PID des Befehls cp bekommen? Derzeit zu lösen dieses ich dies mit:

father=$!   
cpPid=$(pgrep -P $father) 

Damit nicht immer ich die pid, manchmal $ cpPid leer.

Vielen Dank!

+0

'Zeit' ist ein Shell-Befehl eingebaut und es kann keine PID haben. – pynexj

Antwort

0

Dadurch erhalten Sie die PID des Befehls cp, obwohl Sie eine Suchzeichenfolge spezifischer als CP verwenden sollten, da dieses Beispiel ein hohes Potenzial für mehrere Übereinstimmungen hat.

ps -eo pid,cmd | grep cp | grep -v grep | awk '{print $1}' 
+0

Hallo, antworten Ihre Ergebnisse, um wirksam zu sein. Aber, wie Sie sagten, es hat mehr als 7 Übereinstimmungen. Könnten Sie mir einen Weg geben, dies zu lösen? Ich versuche, die Antwort zu bekommen, aber ich weiß nicht, wie man bestimmt, welcher der richtige ist. Dank – Joan

+0

können Sie die Details aus dem Befehl ps (ps aux | grep cp) erweitern und nach etwas suchen, das eindeutig identifiziert und konsistent ist verarbeiten und verwenden Sie diese Suchzeichenfolge statt einfach "cp" –

Verwandte Themen