从R会话调用system
函数并将pgrep
命令传递给列出与特定名称匹配的进程id时,system
调用的结果会产生一个额外的pid与相同的{{1直接在shell中使用的命令
这可能是在pgrep
调用期间创建额外进程的问题,该进程也被system
捕获并返回到R会话。
问题是如何避免此问题并找到与名称匹配的所有进程?
要重现启动任何进程,我将使用pgrep
进程(ubuntu记事本应用程序)。
从R:
运行
gedit
从shell运行:
system("pgrep -f gedit", intern = TRUE)
# [1] "4898" "5014"
如果额外的pid总是最后一个返回,我可以使用pgrep -f gedit
# 4898
。
答案 0 :(得分:1)
您可以通过删除-f
调用中的pgrep
参数来获得所需的输出。这是我从电脑上得到的:
system("pgrep gedit", intern = TRUE)
#[1] "2888"
system("pgrep -f gedit", intern = TRUE)
#[1] "2888" "5839"