MST
星途 面试题库

面试题:Bash管道与命令替换的复杂场景应用

有一个脚本用于监控服务器进程,进程信息通过`ps -ef`获取。现在需要使用Bash的管道和命令替换,将指定用户(假设为`user1`)的所有进程信息提取出来,并统计这些进程占用的总内存大小(以MB为单位),然后输出结果。
28.1万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
total_mem=$(ps -ef | grep 'user1' | grep -v grep | awk '{print $6}' | awk '{sum+=$1} END {print sum/1024}')
echo "Total Memory Used by user1's processes: $total_mem MB"

解释:

  1. ps -ef 获取所有进程信息。
  2. grep 'user1' 筛选出 user1 用户的进程信息。
  3. grep -v grep 排除 grep 本身的进程信息。
  4. awk '{print $6}' 提取进程占用内存大小字段(第6列)。
  5. 第二个 awk '{sum+=$1} END {print sum/1024}' 累加内存大小并转换为MB。
  6. 最后使用 echo 输出结果。