仿照free -k | awk 'NR==2{print $7}',一行linux命令获取JVM总内存,仅当前用户
时间: 2024-03-05 14:47:41 浏览: 169
可以使用以下Linux命令获取当前用户的JVM总内存:
```
jcmd | grep "java.lang" | awk '{print $1}' | xargs -I {} jcmd {} VM.native_memory summary | grep -E 'Total|Heap' | grep -v 'Reserved' | awk '{print $2}' | paste -sd+ - | bc
```
该命令的具体作用是:
1. 使用jcmd命令列出当前正在运行的JVM进程,并通过grep命令过滤出包含java.lang的进程;
2. 使用awk命令获取进程PID;
3. 使用xargs命令将PID传递给jcmd命令,获取JVM的native_memory摘要信息;
4. 使用grep命令过滤出Total和Heap行;
5. 使用grep命令过滤掉Reserved列;
6. 使用awk命令获取第2列(即内存值);
7. 使用paste命令将多行内存值合并为一行,使用+分隔符;
8. 使用bc命令计算合并后的内存值总和。
最终输出的结果是JVM的总内存,单位为字节。如果需要输出其他单位,可以使用相应的转换命令进行转换。
相关问题
可用内存剩余:{`free -h | awk 'NR==2{print $4}'`} 可用缓存剩余:{`free -h | awk 'NR==2{print $6}'`} 可用虚拟内存剩余:{`free -h | awk 'NR==3{print $4}'`}
我看到你的第一个问题是关于系统内存的查询,可用内存剩余为`{free -h | awk 'NR==2{print $4}'}`,可用缓存剩余为`{free -h | awk 'NR==2{print $6}'}`,可用虚拟内存剩余为`{free -h | awk 'NR==3{print $4}'}`。是否还有其它需要帮助的地方呢?
free -m | awk 'NR==2{print $4}' 单位是什么
`free -m | awk 'NR==2{print $4}'` 命令用于获取当前系统中可用的内存大小。
该命令首先使用 `free -m` 命令获取当前系统的内存使用情况,其中 `-m` 参数表示以 `MB` 为单位显示内存使用情况。然后使用 `awk` 命令筛选出第二行(即包含物理内存信息的行),并打印该行的第四个字段,即可用的内存大小。因此,该命令输出的数值的单位为 `MB`。
需要注意的是,该命令获取的内存大小是物理内存和交换分区(Swap)的总和。
阅读全文