加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何从R中读取linux进程状态(ps)命令的输出?

发布时间:2020-12-14 01:04:05 所属栏目:Linux 来源:网络整理
导读:这是data.txt: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 2280 728 ? Ss 20:44 0:00 init [2] root 2 0.0 0.0 0 0 ? S 20:44 0:00 [kthreadd] root 202 0.0 0.0 0 0 ? S 20:44 0:00 [ext4-dio-unwri root 334 0.0 0.1 2916 1
这是data.txt:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND  
root         1  0.0  0.0   2280   728 ?        Ss   20:44   0:00 init [2]    
root         2  0.0  0.0      0     0 ?        S    20:44   0:00 [kthreadd]  
root       202  0.0  0.0      0     0 ?        S<   20:44   0:00 [ext4-dio-unwri  
root       334  0.0  0.1   2916  1452 ?        Ss   20:44   0:00 udevd --daemon

如何将数据读入data.frame?
1.不能决定分隔符
最后一个字段是个问题,空格不能是分隔符,
init [2],udevd –daemon是一个字段,不能用空格分隔.
2.没有固定的宽度
每条线都有不同的宽度.

那么,我如何将data.txt读入data.frame?

解决方法

我会这样做:

library(stringr) # has a convenient function for splitting to a fixed length 

raw          <- system("ps aux",intern = TRUE)
fields       <- strsplit(raw[1]," +")[[1]]
ps           <- str_split_fixed(raw[-1]," +",n = length(fields))
colnames(ps) <- fields

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读