首页 > 试题广场 >

统计所有进程占用内存百分比的和

[编程题]统计所有进程占用内存百分比的和
  • 热度指数:55537 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
假设 nowcoder.txt 内容如下:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.4  77744  8332 ?        Ss    2021   1:15 /sbin/init noibrs splash
root         2  0.0  0.0      0     0 ?        S     2021   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        I<    2021   0:00 [kworker/0:0H]
daemon     486  0.0  0.1  28340  2372 ?        Ss    2021   0:00 /usr/sbin/atd -f
root       586  0.0  0.3  72308  6244 ?        Ss    2021   0:01 /usr/sbin/sshd -D
root     12847  0.0  0.0   4528    68 ?        S<   Jan03   0:13 /usr/sbin/atopacctd
root     16306  1.7  1.2 151964 26132 ?        S<sl Apr15 512:03 /usr/local/aegis/aegis_client/aegis_11_25/AliYunDun
root     24143  0.0  0.4  25608  8652 ?        S<Ls 00:00   0:03 /usr/bin/atop -R -w /var/log/atop/atop_20220505 600
root     24901  0.0  0.3 107792  7008 ?        Ss   15:37   0:00 sshd: root@pts/0
root     24903  0.0  0.3  76532  7580 ?        Ss   15:37   0:00 /lib/systemd/systemd --user
root     24904  0.0  0.1 111520  2392 ?        S    15:37   0:00 (sd-pam)
以上内容是通过ps aux命令输出到nowcoder.txt文件中的,请你写一个脚本计算一下所有进程占用内存大小的和。
示例1

输入

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.4  77744  8332 ?        Ss    2021   1:15 /sbin/init noibrs splash
root         2  0.0  0.0      0     0 ?        S     2021   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        I<    2021   0:00 [kworker/0:0H]
daemon     486  0.0  0.1  28340  2372 ?        Ss    2021   0:00 /usr/sbin/atd -f
root       586  0.0  0.3  72308  6244 ?        Ss    2021   0:01 /usr/sbin/sshd -D
root     12847  0.0  0.0   4528    68 ?        S<   Jan03   0:13 /usr/sbin/atopacctd
root     16306  1.7  1.2 151964 26132 ?        S<sl Apr15 512:03 /usr/local/aegis/aegis_client/aegis_11_25/AliYunDun
root     24143  0.0  0.4  25608  8652 ?        S<Ls 00:00   0:03 /usr/bin/atop -R -w /var/log/atop/atop_20220505 600
root     24901  0.0  0.3 107792  7008 ?        Ss   15:37   0:00 sshd: root@pts/0
root     24903  0.0  0.3  76532  7580 ?        Ss   15:37   0:00 /lib/systemd/systemd --user
root     24904  0.0  0.1 111520  2392 ?        S    15:37   0:00 (sd-pam)

输出

3.1
头像 龙须挂面
发表于 2021-08-13 11:02:47
1、 sum=0 for i in `awk '{print $6}' nowcoder.txt` do ((sum+=$i)) done echo $sum 此处利用for循环,用变量i来接收nowcoder.txt文件每一行对应的数据,利 展开全文
头像 小吴要加油
发表于 2022-10-08 21:10:14
首先,注意区分第四列和第六列的意思: %MEM 进程的内存占用率 RSS 进程使用的驻留集大小或者是实际内存的大小,Kbytes字节。 最近看这道题,发现应该是牛客官方改了题目,绝大部分题解现在都不能通过这道题目了。事实上,题目要求的是所有进程占用内存百分比的和,这应该用第四列来计算,第六列是实 展开全文
头像 郭富成
发表于 2021-07-29 20:35:21
该题实际需求是获取对应列值进行计算,期间需要了解ps命令结果中每一列代表的含义 #!/usr/bin/env bash function test() { local sum=0 local arr=() while read line; do arr=(${ 展开全文
头像 有个
发表于 2021-12-19 01:08:45
# 1 let sum=0 for i in $(awk '{print $6}' nowcoder.txt); do ((sum+=$i)) done echo $sum # 2 awk '{sum+=$6}END{print sum}' nowcoder.txt # 3 awk 'BE 展开全文
头像 wangyetao
发表于 2024-02-23 15:26:27
#!/bin/bash total_mem=0 awk 'NR>1 {total_mem += $4} END {print total_mem}' nowcoder.txt 这个脚本将逐行读取名为 nowcoder.txt 的文件,从第二行开始计算第五列(%MEM)的总和,并在最后打印出总内 展开全文
头像 芒果沙冰
发表于 2022-09-08 21:10:02
sum=0 for i in `awk -F ' ' '{print $4}' nowcoder.txt | grep -v '%MEM'` do     sum=`echo "$sum + $i" | bc` done echo $sum
头像 AAA批发电锯
发表于 2023-07-25 16:33:57
#!/bin/bash sum=0 i=0 while read line do if [ $i -ne 0 ]; then #把文本中每行第四个字段保存到value中,第一行的字段是字符串%MEM,i控制跳过 value=$(echo "$line 展开全文
头像 李阿霸
发表于 2022-05-03 17:16:56
# sum=0 # for i in `awk '{print $6}'nowcoder.txt`;do # ((sum+=$i)) # done; # echo $sum; awk '{ sum+=$6; } END{ print sum }' nowcoder.txt
头像 已注销
发表于 2023-08-20 21:05:22
#!/bin/bash awk 'BEGIN{sum=0}{sum+=$4}END{print sum}' ./nowcoder.txt
头像 通辽国_0ffer选帝侯
发表于 2024-02-07 16:18:29
#!/bin/bash #**********************1********************** #内建的 ((...)) 算术扩展不支持浮点数运算,它仅用于整数运算。 #如果你需要处理浮点数,你可以使用 bc,这是一个任意精度的计算器语言。 #sum=0 #for i in 展开全文