Функция pipe () и консоль Ubuntu дают разные результаты - PullRequest
1 голос
/ 14 марта 2019

Я использую R на моей машине с Ubuntu с последней конфигурацией

В 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?

Спасибо

1 Ответ

0 голосов
/ 14 марта 2019

Используйте ps() в пакете ps.Эта функция выводит data.frame с информацией идентификатора процесса.

library(ps)

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

или в одну строку:

subset(ps(), grep("docker", name))$pid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...