题解 | #ps分析-统计VSZ,RSS各自总和#

ps分析-统计VSZ,RSS各自总和

http://www.nowcoder.com/practice/7094b5f96e1a4c998ce01baf407beee6

#! /usr/bin/env bash

########################################################
#
#
########################################################
function solution_1() {
    echo "MEM TOTAL"
    local array=""
    local is_first_line=true
    VSZ_SUM=0
    RSS_SUM=0
    while read line; do
        [[ "${is_first_line}" = "true" ]] && is_first_line=false && continue
        array=(${line})
        VSZ_SUM=$(( ${array[4]} + ${VSZ_SUM} ))
        RSS_SUM=$(( ${array[5]} + ${RSS_SUM} ))
    done < nowcoder.txt
    
    #VSZ_SUM=`awk -v x=${VSZ_SUM} 'BEGIN {print "%.3f", x/1024}'`
    #RSS_SUM=`awk -v x=${RSS_SUM} 'BEGIN {print "%.3f", x/1024}'`
    
    local old_ifs="${IFS}"
    IFS="."
    local length=0
    local str=""
    
    VSZ_SUM=`echo "scale=3; ${VSZ_SUM}/1024" | bc`
    array=(${VSZ_SUM})
    IFS=${old_ifs}
    VSZ_SUM=${array[0]}
    str=$(echo ${array[1]} | sed "s/[^\n]/&\t/g")
    array=(${str})
    length=${#array[@]}
    length=$((${length}-1))
    for (( i=${length}; i >= 0; i-- )); do
        if [[ ${array[$i]} = 0 ]]; then
            unset array[$i]
        else
            break
        fi
    done
    VSZ_SUM="${VSZ_SUM}.${array[@]}"
    
    RSS_SUM=`echo "scale=3; ${RSS_SUM}/1024" | bc`
    IFS="."
    array=(${RSS_SUM})
    IFS=${old_ifs}
    RSS_SUM=${array[0]}
    str=$(echo ${array[1]} | sed "s/[^\n]/&\t/g")
    array=(${str})
    length=${#array[@]}
    length=$((${length}-1))
    for (( i=${length}; i >= 0; i-- )); do
        if [[ ${array[$i]} = 0 ]]; then
            unset array[$i]
        else
            break
        fi
    done
    RSS_SUM="${RSS_SUM}.${array[@]}"
    
    IFS=${old_ifs}
    echo "VSZ_SUM:${VSZ_SUM}M,RSS_SUM:$(echo "${RSS_SUM}" | sed 's/ //g')M"
}

########################################################
#
#
########################################################
function solution_2() {
    awk '{
        if(NR==1) {
            vsz=0;
            rss=0;
        } else {
            vsz += $5;
            rss += $6;
        }
    } END {
        print "MEM TOTAL";
        print "VSZ_SUM:"vsz/1024"M,RSS_SUM:"rss/1024"M";
    }' nowcoder.txt
}

#solution_1
solution_2
全部评论

相关推荐

2024-12-29 15:37
已编辑
西华大学 图像识别
程序员牛肉:去不了,大厂算法卡学历吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务