0

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

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

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

从 R 运行:

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

从外壳运行:

pgrep -f gedit
# 4898

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

4

1 回答 1

1

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

system("pgrep gedit", intern = TRUE)
#[1] "2888"
system("pgrep -f gedit", intern = TRUE)
#[1] "2888" "5839"
于 2015-09-02T12:30:16.273 回答