awk 统计每个用户的进程占用了多少内存
时间: 2024-02-06 07:02:31 浏览: 31
可以使用 awk 命令结合数组来统计每个用户的进程占用了多少内存,命令如下:
```
ps aux | awk '{mem[$1]+=$6} END {for(i in mem) {print i, mem[i]/1024 "MB"}}'
```
其中,ps aux 命令用于列出当前系统所有进程的信息;$1 表示进程的用户;$6 表示进程占用的内存大小;mem[$1]+=$6 表示将每个用户的进程占用的内存大小累加到数组 mem 中;END 为 awk 提供的特殊模式,表示在处理完整个文件后执行的操作;for(i in mem) 表示遍历数组 mem,i 为数组元素的键值,即进程的用户名;mem[i]/1024 "MB" 表示将进程占用的内存大小从字节转换成 MB,并输出。
相关问题
linux 查看进程占用swap分区
Linux系统中,可以使用free命令查看系统内存使用情况,其中包括swap分区的使用情况。如果发现swap分区被占用,可以使用脚本来查看哪些进程占用了swap分区。脚本会遍历/proc目录下的所有进程,获取每个进程占用的swap分区大小,并将结果按照升序排列展示出来,方便用户查看哪些进程占用了swap分区。具体操作步骤如下:
1. 打开终端,输入以下命令查看系统内存使用情况:
free
2. 如果发现swap分区被占用,可以使用以下命令执行脚本来查看哪些进程占用了swap分区:
sh swap_check.sh
执行完毕后,会在终端输出占用swap分区最多的前10个进程及其占用的swap分区大小。
3. 如果想要验证脚本的结果,可以使用以下命令查看某个进程占用的swap分区大小:
cat /proc/[PID]/smaps | grep Swap | awk '{sum+=$2} END {print sum}'
其中,[PID]为进程的PID号。
用Shell语言编写一个脚本,用来查看所有进程占用CPU和磁盘空间的情况
以下是一个简单的Shell脚本,可以查看所有进程占用CPU和磁盘空间的情况:
```shell
#!/bin/bash
# 获取所有进程ID
pids=$(ps axo pid | sed '1d')
# 遍历所有进程
for pid in $pids
do
# 获取进程的CPU占用情况
cpu=$(ps -p $pid -o %cpu | sed '1d')
# 获取进程的磁盘空间占用情况
disk=$(du -sh /proc/$pid | awk '{print $1}')
# 输出进程ID、CPU占用、磁盘空间占用情况
echo "PID: $pid, CPU: $cpu%, Disk: $disk"
done
```
该脚本首先获取所有进程的ID,然后遍历所有进程,针对每个进程获取其CPU占用和磁盘空间占用情况,并将结果输出到终端。请注意,该脚本需要以root权限运行才能查看所有进程的磁盘空间占用情况。