在 bash 中,有没有办法查看 .bashrc 和任何启动脚本消耗了多少内存?

在 bash 中,有没有办法查看 .bashrc 和任何启动脚本消耗了多少内存?

在 bash 中,.bashrc(以及各种其他脚本)可以在 shell 启动时加载到内存中。这些可以是 10 行长,但也可以是数百(如果不是数千)行长。每个导出都会消耗少量的内存,并且每个函数和每个别名也需要在内存中保存少量资源。另一个考虑因素是,我们不能只查看 和其他脚本的大小,.bashrc因为它们可能有大量不消耗内存的注释。

我想删除所有启动脚本,启动系统,等待几分钟让事情稳定下来,然后采取某种基线,然后将启动脚本放回原位,重新启动系统并执行相同的练习来尝试和获取某种资源/性能差异。

您能建议哪些工具可以帮助确定这一点吗?我有一组相对较大的启动脚本,大约 15k,定义了许多函数和别名,所以我真的很好奇有什么影响(如果有的话,作为一个具有 16 GB 内存和快速现代 Core i5 的现代系统,效果可能会可以忽略不计)这对系统消耗的资源有何影响?即使我的启动脚本的影响很小,我仍然希望能够采取基线,然后进行“负载测试”,以对系统如何处理运行一组给定的应用程序进行一些评估。

答案1

启动脚本和最终设置的影响将主要影响交互式 shell;要确定最终的资源消耗,您无需费尽心思。打开一个终端窗口,以便您的默认 shell 以其默认设置启动,然后启动一个 shell 而不加载启动脚本,并从该 shell 中运行ps -F

$ bash --norc
$ ps -F
UID          PID    PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
steve    3922819 3921628  0  2307  4812   7 20:49 pts/14   00:00:00 bash
steve    3922883 3922819  0  2276  4688   5 20:49 pts/14   00:00:00 bash --norc
steve    3922884 3922883  0  2892  4244   0 20:49 pts/14   00:00:00 ps -F

查看该RSS专栏显示我的 bash 设置(相当小)比简单的 bash 多使用 124KiB。

我的 Zsh 设置更复杂:

$ zsh -f
$ ps -F
UID          PID    PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
steve    3921244   18008  0  3341  8296   2 20:43 pts/14   00:00:00 zsh
steve    3921628 3921244  0  2829  5856   5 20:44 pts/14   00:00:00 zsh -f
steve    3923250 3922883  0  2892  4132   7 20:51 pts/14   00:00:00 ps -F

差异较大,为 2440KiB。

非交互式 shell 不会加载相同的启动脚本,并且它们无论如何也不会存活很长时间 - 如果您运行等ps -FC shps -FC bash您应该会看到没有很多(如果有的话)。

您在环境中加载的内容可能会产生更大的影响;要了解这一点,请查看 的实际大小/proc/.../environ

$ sudo wc -c /proc/*/environ | tail -n 1
758799 total

总计 741KiB,可容纳近千个正在运行的进程。

相关内容