Должны ли процессы в cgroups быть установлены при каждой загрузке? Если да, то как их сохранить?

9

Я читал этот ответ на вопрос об установке ограничений для процессов с помощью cgroups. Данный образец устанавливает пределы для процесса (в примере, sshd). В ответе PID процесса устанавливается вручную. Это было бы неприемлемо для моих целей, я хотел бы, чтобы процессы, запущенные из данного приложения, всегда имели установленные ограничения, независимо от того, когда они запущены, или не ограничены тем, сколько таких процессов запущено.

Возможно, из примера неясно, как это могло бы произойти, поэтому было бы желательно получить четкое объяснение или ссылку на него. Пример в ядре cgroups.txt, похоже, использует ту же модель, что и приведенная выше .

casualunixer
источник

Ответы:

6

Самым простым способом является использование, systemdкоторое в sshdлюбом случае может нести ответственность за вас (в зависимости от дистрибутива). Вы можете легко настроить ограничения в sshdфайле модуля. systemdВ любом случае все службы помещаются в отдельные группы.

Без systemdпростейшего решения, вероятно, это модификация sshdстартового скрипта (обратите внимание, что он не перезаписывается обновлением; может быть, неплохо скопировать его под другим именем и отключить оригинальный скрипт).

Хауке Лагинг
источник
Существует проблемное приложение, ограничение которого было бы здорово убрать, это не sshd. Просто sshd был использован в примере. Предположительно, вы можете применять cgroups к любому процессу. Сценарий может оказаться самым простым решением. Похоже, что cgroups был бы хорошим ответом.
casualunixer
@casualunixer Вы просто должны написать файл модуля для своего приложения. Вы можете настроить его так, чтобы он запускался автоматически при загрузке или просто вручную.
Хауке Лагинг
@laging, если бы вы могли дать пример файла модуля в ответе или указатель на документацию аналогично, это было бы полезно.
casualunixer
@casualunixer Это именно то, что и следовало ожидать: man systemdприводит к man 5 systemd.unitприводит к man 5 systemd.service. На моей системе файл SSH есть /usr/lib/systemd/system/sshd.service.
Хауке Лагинг
Ах, учитывая, что я не установил systemd, хотя это тема этого ответа, это было не сразу очевидно.
casualunixer