command less 在 FHS 中的什么位置存储其缓冲区?

command less 在 FHS 中的什么位置存储其缓冲区?

使用从 USB 记忆棒运行的 Kubuntu 20.04。因此,/cow上面安装了一个覆盖文件系统/。 USB 记忆棒的总容量为 32 GB,但cow只分配给覆盖文件系统 16 GB。我的计算机的 RAM 大小为 32 GB(如实用程序“免费”总计所示)。

我当前状态的原因是我忘记禁用互联网连接。

之前我也用过aptitude来搜索,但是并没有刻意去下载什么东西。一夜之间,“牛”中的 16 GB 大约已使用了 2 GB。df -Th -a显示“已使用”从 21% 增长到 33%。

现在我正在调查,谁做了什么。

为此,我运行了(几个小时)一个自己编写的程序wels_fullpath(基于 bash globstar 和**/,将输出通过管道传输到sort(用于按时间排序),然后从 sort 传输到less。当它运行时,我必须注意哪些内存用于sort和 的缓冲区less。 (我现在忽略了排序)。

为此,我不断运行该实用程序来观察和 的watch变化:dffree

watch -d  "df -T -a >/tmp/WEx_df__2; diff -U0 /tmp/WEx_df__1 /tmp/WEx_df__2; free -w -h"

strace表明wels_fullpath正在发挥作用。

但无论是在df还是在都free没有报告变化。

那么问题来了,df一些不断增长的缓冲区应该出现在列表的什么位置呢?

我已经阅读了文档,less并且在互联网上进行了长时间的谷歌搜索。有一些关于 less 和 buffers 的好文章。但没有任何地方描述在 FHS 中哪里应该看到较少的缓冲区以及使用什么名称。

  • 附录:

一个新问题出现了。

我已经改变了我的调用顺序,不再在这里使用“less”。

尽管如此,我的问题对我来说仍然很重要。

也许对于 less 的缓冲区所在的地方,我还没有写出适当的术语“存储”。我已经“在内存或磁盘上”。较少的缓冲区应该对“free”或“df”产生影响。这应该在一些文档中注明。

现在我的命令链是:

/.../wels_fullpath -d / 2>/dev/null | grep -v -e "^fd1" | grep -v -e "^fd1" | grep -v -e "^fd1" |排序-s -r -k7,8 >/tmp/WEx01

正如我在“top”(默认情况下未安装“htop”)中看到的那样,执行尚未开始:

顶部 -p <PID>

显示:

PID 用户 PR NI VIRT RES

2159985 根 20 0 242132 235816

SHR S %CPU %MEM 时间+

3160 R 99.3 0.7 1634:33

命令

wels_完整路径

在我的程序中我使用了一个数组。并且在读取源“/”中的文件时,将它们写入数组中。因此 VIRT 和 RES 不断增长,好吧。

但我永久运行的“df”和“free”的“手表”并没有显示这些变化。 “免费”中的值上下变化很小。

因此,我的附加问题是:

为什么我的程序不断增长的内存使用量没有反映在“空闲”中?

Linux、Kubuntu 中是否有一个实用程序可以分析和显示内存的各个方面(如“df”、“du”)?

问候 Antandhidh

哦,对不起。我记住并发现:

/proc/meminfo 给出了很好的概述。 pmap 给出每个进程的内存使用情况。

抱歉打扰您了。

问候 Antandhidh

答案1

less不在文件系统中的任何位置存储缓冲区。它的缓冲区可使用--buffers--auto-buffers选项进行配置,保存在内存中(可能在交换区中)。

相关内容