Ответ зависит от того, сколько памяти доступно вашему серверу при запуске ядра. При использовании раздувания памяти это основано на максимуме, до которого он может раздуваться.
Для ядра Linux 4.15:
So why is there so much more kernel memory on the 16gb machine?
Относительно нет. Предполагая, что ваше число было правильным, вы видите, что 8,6% зарезервировано для 512 МБ и всего 2,3% для 16 ГБ.
Почему эти пропорции выбраны в ядре, я не знаю -от руки, но вы можете увидеть разрыв -в dmesg:
[ 0.000000] Memory: 65920612K/67108324K available (12300K kernel code, 2473K rwdata, 4272K rodata, 2408K init, 2416K bss, 1187712K reserved, 0K cma-reserved)
Вот кое-что, что я бы сказал, лучший способ справиться с этим:
здравый смысл
Теперь, хотя это может показаться очевидным или грубым, вы можете спросить: «Какой здравый смысл?»:
bash
иногда символически ссылается на sh
в некоторых дистрибутивах sh
иногда является символической ссылкой наash
(busybox)bash
скрипт обычно работает нормально (за исключением некоторых синтаксисов )в sh
и наоборот (то же самое дляash
-sh
)shellcheck
или не имеете больше опыта)Вышеописанное можно применить/расширить и для других оболочек. Просто не стесняйтесь try
любой фрагмент/код, который вы найдете (Я нахожу -x
или set -x
для отладки и shellcheck
для полезной помощи при этом ).
Конечно, по-прежнему рекомендуется использовать соответствующую документацию для каждой оболочки, когда вы сомневаетесь или сталкиваетесь с проблемами.
Дополнительные ресурсы:
Попытка — это часть обучения. Удачи!
Скорее всего, вас интересует не историческая оболочка Bourne (, которая обычно недоступна в большинстве современных систем UNIX ), а оболочки, реализующие текущую спецификацию POSIX для sh
оболочка.
sh
доступен в разделе, посвященном этой утилите, оболочке sh -, интерпретатору стандартного командного языка и См. также:
Принятый в настоящее время ответ на вопрос U&L Что значит быть «совместимым с sh»? очень подробно описывает историю и «родословную» оболочек Unix.
Команда man sh
в системе, с которой вы работаете, покажет вам руководство для оболочки sh
в этой системе. Это будет оболочка, реализующая синтаксис и грамматику POSIX, возможно, путем изменения того, как оболочка будет нормально вести себя при вызове с использованием собственного имени (, например bash
и zsh
при вызове как sh
, например ).
По моему опыту, если вам нужна помощь в том, как сделать то или иное вещь, используя вашу оболочку #!/bin/sh
, вы можете добавить свой запрос Google одним из следующих:
POSIX-это приведет вас к обсуждению реализации данного функция в POSIX -совместимых оболочках или в POSIX -совместимом виде в оболочки, которые реализуют больше функций, не требуемых POSIX например Баш. (обычно вы оказываетесь вhttps://unix.stackexchange.com)
тире-тире — это /bin/sh Ubuntu, самый популярный рабочий стол дистрибутив Линукс. Он используется cron и другими инструментами, которые запускают команды. при использовании /bin/sh было задано так много вопросов и на них были даны ответы
busybox-busybox поставляется со своей собственной оболочкой, которая не такая большая, как Bash или ZSH, поэтому, если что-то работает в оболочке busybox, оно также должно работайте с вашим местным минималистом /bin/sh, что бы это ни было.
Из распространенных дистрибутивов Linux я думаю, что большинство (например. CentOS и Arch )используют Bash как /bin/sh
. Основное исключение составляют Debian и Ubuntu (и их производные ), которые используют Dash. Ubuntu также имеет полезную вики-страницу, на которой указаны наиболее распространенные «башизмы» :https://wiki.ubuntu.com/DashAsBinSh
Обратите внимание, что исходная оболочка Bourne немного отличается от оболочки POSIX, которая, например. Даш реализует. Вы не найдете это в системах Linux без явного поиска, например. Семейная реликвия .