来自 R system("pgrep -f ...") 调用的额外进程 ID

Extra process id from R system("pgrep -f ...") call

当从 R 会话调用 system 函数并传递 pgrep 命令以列出与特定名称匹配的进程 ID 时,system 调用的结果产生一个额外的 pid 与相同的 pgrep命令直接用在shell.
这可能是在 system 调用期间创建额外进程的问题,该进程也被 pgrep 捕获并返回到 R 会话。

问题是如何避免这个问题并找到与名称匹配的所有进程 ID?

要重现启动任何进程,我将使用 gedit 进程(ubuntu 记事本应用程序)。

运行 来自 R:

system("pgrep -f gedit", intern = TRUE)
# [1] "4898" "5014"

运行 来自 shell:

pgrep -f gedit
# 4898

如果额外的 pid 总是最后一个返回我可以使用 x[-length(x)].

您可以通过在对 pgrep 的调用中删除 -f 参数来获得所需的输出。这是我从我的电脑上得到的:

system("pgrep gedit", intern = TRUE)
#[1] "2888"
system("pgrep -f gedit", intern = TRUE)
#[1] "2888" "5839"