代码之家  ›  专栏  ›  技术社区  ›  Bogaso

R的pipe()函数和Ubuntu控制台给出了不同的结果

  •  1
  • Bogaso  · 技术社区  · 6 年前

    我在我的Ubuntu机器上使用最新配置的R

    在R中,我得到以下结果:

    > read.fwf(pipe('ps -ef | grep /var/lib/docker/'), width = 60)
                                                                V1
    1 root     29155 29151  0 11:18 pts/0    00:00:00 sh -c ps -ef
    2 root     29157 29155  0 11:18 pts/0    00:00:00 grep /var/li
    

    然而在Ubuntu控制台中,我得到了不同的结果

    ps -ef | grep /var/lib/docker/
    root     29150  2509  0 11:17 pts/0    00:00:00 grep --color=auto /var/lib/docker/
    

    我想让R去拿 PID 属于 /var/lib/docker/ ,这是根据Ubuntu 2509

    有人能帮我理解为什么我会得到不同的结果,以及如何正确获取PID编号吗?

    谢谢

    0 回复  |  直到 6 年前
        1
  •  0
  •   G. Grothendieck    6 年前

    使用 ps() 在ps包中。此函数输出带有进程id信息的data.frame。

    library(ps)
    
    pid_df <- ps()
    pid_df$pid[grep("docker", pid_df$name)]
    

    subset(ps(), grep("docker", name))$pid