2017-06-06 185 views
0

我遇到了一个问题,试图从使用时间的命令获取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" &  

如果我现在用的$!,我已经得到时间TE PID。我怎么能得到命令cp的pid?目前解决这个问题我用这个:

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

有了这个,并不总是我得到的PID,有时$ cpPid是空的。

谢谢!

+0

'time'是shell内置命令,它不能有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” –