Bash

在 bash 中,有沒有辦法查看 .bashrc 和任何啟動腳本消耗了多少記憶體?

  • October 3, 2021

在 bash 中,.bashrc(和各種其他腳本)可以在 shell 啟動時載入到記憶體中。這些可以是 10 行長,但可以是數百行(如果不是數千行)。每次導出都會消耗少量記憶體,每個函式和每個別名也會佔用少量記憶體資源。另一個考慮因素是我們不能只看.bashrc和其他腳本的大小,因為它們可能有很多不消耗記憶體的註釋。

我想刪除所有啟動腳本,啟動系統,等待幾分鐘讓事情穩定下來,然後採取某種基線,然後將啟動腳本放回原處,重新啟動系統並執行相同的練習來嘗試獲得某種資源/性能差異。

您能否建議哪些工具可能有助於確定這一點?我有一組相對較大的啟動腳本,大約 15k,定義了許多函式和別名,所以我真的很好奇有什麼影響(如果有的話,作為一個具有 16 GB 記憶體和快速現代 Core i5 的現代系統,效果可能可以忽略不計)這對系統消耗的資源有影響嗎?即使我的啟動腳本的影響很小,我仍然希望能夠採用基線,然後進行“負載測試”,以評估系統如何處理執行給定的一組應用程序。

您的啟動腳本和由此產生的設置的影響將主要影響互動式 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 設置(相當少)使用 124KiB 多於一個簡單的 bash。

我的 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 sh等,ps -FC bash你應該會看到沒有很多(如果有的話)。

您在環境中載入的內容可能會產生更大的影響;要了解這一點,請查看 的實際大小/proc/.../environ

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

對於將近一千個正在執行的程序,總共有 741KiB。

引用自:https://unix.stackexchange.com/questions/671674