You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ublinux-init/ublinux/rc.post.d/46-cgroup-quota

42 lines
1.3 KiB

#!/bin/bash
ENABLED=yes
[ "$ENABLED" != "yes" ] && exit 0
DEBUGMODE=no
unset ROOTFS; [[ -d /usr/lib/ublinux ]] || ROOTFS=.
SOURCE=${ROOTFS}/usr/lib/ublinux/functions; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
SOURCE=${ROOTFS}/usr/lib/ublinux/os-config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null || exit 0
debug_mode "$0" "$@"
SYSCONF="${ROOTFS}/${SYSCONF}"
SOURCE=${SYSCONF}/config; [[ -f ${SOURCE} ]] && . ${SOURCE} 2>/dev/null
SOURCE=${SYSCONF}/security; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
exec_cgroup_quota(){
## Квоты на ресурсы, через cgroup2. Механизм systemd или напрямую cgroup
if [[ -n ${CGROUP_QUOTA[@]} ]]; then
for ITEM_UNIT in "${!CGROUP_QUOTA[@]}"; do
if [[ ! ${ITEM_UNIT} =~ ".service"$|".slice"$|".scope"$ ]]; then
USER_ID=$(id -u ${ITEM_UNIT})
[[ -n ${ITEM_UNIT} ]] && USER_SLICE="user-$(id -u ${USER_ID}).slice" || return 1
COMPAT_UNIT=${USER_SLICE}
else
COMPAT_UNIT=${ITEM_UNIT}
fi
if readlink -fq ${ROOTFS}/usr/bin/init | grep -q "lib/systemd/systemd$"; then
systemctl set-property --runtime ${COMPAT_UNIT} ${CGROUP_QUOTA[${ITEM_UNIT}]//,/ }
systemctl daemon-reload
else
true
fi
done
fi
}
################
##### MAIN #####
################
exec_cgroup_quota $@