2017-06-06 20 views
0

Timeを使用してコマンドからPIDを取得しようとするときに問題が発生しています。私が使用 コマンドは次のとおりです。子プロセスからPIDを取得

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

私は今$!を使用している場合は、私がTIMEからteのPIDを取得しました。コマンドのpidを取得するにはどうすればよいですかcp?これにより

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

を、必ずしも私は時々$ cpPidが空で、PIDを取得する:現在、私はこれを使用していますこの問題を解決します。

ありがとうございました!

+0

'time'はシェル組み込みコマンドであり、PIDを持つことはできません。 – pynexj

答えて

0

これはcpコマンドのpidを取得しますが、このサンプルは複数の一致の可能性が高いため、cpよりも特定の検索文字列を使用する必要があります。

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

こんにちは、回答結果は効果的です。しかし、あなたが言ったように、それは7つ以上の試合を持っています。これを解決しようとする方法を教えてください。私は答えを得ようとしていますが、どちらが正しいかを判断する方法はわかりません。ありがとう – Joan

+0

psコマンド(ps aux | grep cp)から詳細を展開し、一意に識別し、単純に "cp"の代わりにその検索文字列を処理して使用する –