Bash에서 .bashrc 및 시작 스크립트가 소비하는 메모리 양을 확인할 수 있는 방법이 있습니까?

Bash에서 .bashrc 및 시작 스크립트가 소비하는 메모리 양을 확인할 수 있는 방법이 있습니까?

Bash에서는 .bashrc쉘이 시작될 때 (다른 다양한 스크립트도 포함) 메모리에 로드될 수 있습니다. 길이는 10줄일 수 있지만, 수천 줄은 아니더라도 수백 줄이 될 수도 있습니다. 각 내보내기는 소량의 메모리를 소비하며, 각 함수와 각 별칭에도 메모리에 보관되는 소량의 리소스가 필요합니다. 또 다른 고려 사항은 다른 스크립트의 크기만 볼 수 없다는 점입니다. 다른 스크립트에는 .bashrc메모리를 소비하지 않는 많은 주석이 있을 수 있기 때문입니다.

모든 시작 스크립트를 제거하고, 시스템을 부팅하고, 문제가 해결될 때까지 몇 분 정도 기다렸다가 일종의 기준을 마련한 다음 시작 스크립트를 다시 넣고, 시스템을 재부팅하고 동일한 연습을 수행하여 일부를 얻으려고 합니다. 일종의 리소스/성능 차이입니다.

이를 결정하는 데 도움이 될 수 있는 도구를 제안해 주실 수 있나요? 나는 많은 함수와 별칭을 정의하는 약 15,000개 정도의 상대적으로 큰 시작 스크립트 세트를 가지고 있으므로 16GB RAM과 빠른 최신 시스템을 갖춘 최신 시스템으로서 그 영향(있는 경우)이 무엇인지 정말 궁금합니다. Core i5, 효과는 미미할 듯) 시스템이 소비하는 리소스에 어떤 영향을 미치나요? 시작 스크립트의 영향이 미미하더라도 여전히 기준을 잡은 다음 "부하 테스트"를 수행하여 시스템이 특정 응용 프로그램 집합 실행을 처리하는 방법을 평가할 수 있기를 원합니다.

답변1

시작 스크립트 및 최종 설정의 영향은 주로 대화형 셸에 영향을 미치므로 최종 리소스 소비를 결정하기 위해 노력할 필요는 없습니다. 기본 셸이 기본 설정으로 시작되도록 터미널 창을 연 다음 시작 스크립트를 로드하지 않고 셸을 시작하고 해당 셸에서 실행합니다 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로 더 큽니다.

비대화형 쉘은 동일한 시작 스크립트를 로드하지 않으며 어쨌든 오래 지속되지 않습니다. etc.를 실행하면 스크립트 가 많지 않다는 것을 알 수 있습니다 ps -FC sh.ps -FC bash

환경에 로드하는 내용이 더 큰 영향을 미칠 수 있습니다. 이를 이해하려면 다음의 실제 크기를 살펴보세요 /proc/.../environ.

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

총 741KiB로 거의 1,000개의 실행 중인 프로세스를 수용할 수 있습니다.

관련 정보