Как вставить переменную bash в команду ruby?

В ядре Linux есть компонент, называемый убийцей OOM (нехватки памяти ). Как указал Патрик в комментариях, убийцу OOM можно отключить, но по умолчанию разрешена избыточная фиксация (и, таким образом, включен убийца OOM ).

Приложения запрашивают у ядра дополнительную память, и ядро ​​может отказать им в ее предоставлении (из-за нехватки памяти или из-за того, что ulimitбыло использовано, чтобы лишить процесс дополнительной памяти ). Если overcommit включен, то приложение запросило некоторое количество памяти и получило количество, но если приложение записывает в новую страницу памяти (в первый раз ), и ядро ​​фактически должно выделить память для этого, но не может этого сделать что тогда ядро ​​должно решить, какой процесс убить, чтобы освободить память.

Ядро скорее убьет новые процессы, чем старые, особенно те, которые (вместе со своими потомками )потребляют много памяти. Таким образом, в вашем случае может начаться новый процесс, но, вероятно, он будет убит.

Вы можете использовать файлы

/proc/self/oom_adj
/proc/self/oom_score
/proc/self/oom_score_adj

, чтобы проверить текущие настройки и сообщить ядру, в каком порядке оно должно убивать процессы, если это необходимо.

0
05.03.2020, 18:48
1 ответ

Вы используете одинарные кавычки. В bash переменные в одинарных кавычках не раскрываются.

ruby -rjson -e "j = JSON.parse($json); puts j[\"Instances\"][0][\"ImageId\"]"
1
28.04.2021, 23:21

Теги

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