【问题标题】:Get the PID from the child process从子进程获取PID
【发布时间】:2017-06-06 17:51:30
【问题描述】:

我在尝试使用 Time 从命令中获取 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 获得 PID。如何获取命令cp 的pid?目前为了解决这个问题,我正在使用这个:

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

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

谢谢!

【问题讨论】:

  • time 是一个 shell 内置命令,它不能有 PID。

标签: bash time pid cp


【解决方案1】:

这将为您提供 cp 命令的 pid,但您应该使用比 cp 更具体的搜索字符串,因为此示例很可能会出现多个匹配项。

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

【讨论】:

  • 您好,您的回答结果有效。但是,正如你所说,它有超过 7 场比赛。你能给我一些方法来尝试解决这个问题吗?我试图得到答案,但我不知道如何确定哪个是正确的。谢谢
  • 您可以从 ps 命令 (ps aux | grep cp) 扩展详细信息,并查找有关该进程的唯一标识和一致的内容,并使用该搜索字符串而不是简单的“cp”
猜你喜欢
  • 2021-08-08
  • 2017-03-23
  • 1970-01-01
  • 2017-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-14
相关资源
最近更新 更多