Функция pipe () R и консоль Ubuntu дают разный результат

#r #linux #docker #ubuntu

#r #linux #docker #ubuntu

Вопрос:

Я использую 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:

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

 library(ps)

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

или в одной строке:

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