Есть ли в bash способ узнать, сколько памяти потребляет файл.bashrc и какие-либо сценарии запуска?

Одинарные кавычки предотвращают расширение переменной оболочкой. Вместо этого пользователь использует двойные кавычки.

Для значений, которые не нужно заключать в кавычки в JSON:

aa=$( curl -d "{\"foo\": $bb}" -H... )

или,

aa=$( curl -d '{"foo":'"$bb"'}' -H... )

Если значение переменной должно быть закодировано в формате JSON, (может потребоваться для некоторых строк ), или если вы хотите, чтобы синтаксический анализатор JSON принимал решение о заключении значения в кавычки (, которое обычно требуется при отправке данные, считанные из внешнего источника, такие как пользовательский ввод):

aa=$( curl -d "$( jq -nc --arg val "$bb" '{"foo": $val}' )" -H... )

или, в два этапа,

json=$( jq -nc --arg val "$bb" '{"foo": $val}' )" )
aa=$( curl -d "$json" -H... )

Здесь используется jqдля создания документа JSON, который затем используется с параметром -dдля curl.

2
03.10.2021, 17:59
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 (, которая довольно минимальна ), использует на 124 КБ больше, чем 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

Там разница больше, 2440КиБ.

Не-интерактивные оболочки не загружают одни и те же сценарии запуска, и они в любом случае не живут долго — если вы запустите ps -FC sh, ps -FC bashи т. д., вы должны увидеть, что их не так много (если вообще есть ).

То, что вы загружаете в свою среду, может иметь большее влияние; чтобы получить некоторое представление об этом, посмотрите на реальный размер/proc/.../environ:

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

Всего это 741 КБ для почти тысячи запущенных процессов.

4
03.10.2021, 18:56

Теги

Похожие вопросы