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

时间:2019-03-14 11:23:46

标签: r linux docker ubuntu

我在具有最新配置的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/

根据Ubuntu 2509,我希望R提取PID中的/var/lib/docker/

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

谢谢

1 个答案:

答案 0 :(得分:0)

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

library(ps)

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

或一行:

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