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.
|
|
|
#!/sbin/openrc-run
|
|
|
|
# Copyright 1999-2015 Gentoo Foundation
|
|
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
|
|
|
|
CGCONFIGPARSER="/usr/sbin/cgconfigparser"
|
|
|
|
CGCLASSIFY="/usr/sbin/cgclassify"
|
|
|
|
: ${CG_CONFIGFILE:=/etc/cgroup/cgconfig.conf}
|
|
|
|
description="Control Group Configuration Service"
|
|
|
|
|
|
|
|
start()
|
|
|
|
{
|
|
|
|
ebegin "Setting up CGroups"
|
|
|
|
${CGCONFIGPARSER} --load=${CG_CONFIGFILE} >/dev/null 2>&1
|
|
|
|
eend "$?"
|
|
|
|
}
|
|
|
|
|
|
|
|
start_post()
|
|
|
|
{
|
|
|
|
# Classify PID according to the rules if requested
|
|
|
|
yesno "${CG_CLASSIFY}" || return 0
|
|
|
|
ebegin "Classifying PID to CGroups"
|
|
|
|
local pid
|
|
|
|
for pid in $(ps --no-headers -eL o tid); do
|
|
|
|
${CGCLASSIFY} ${pid}
|
|
|
|
done
|
|
|
|
eend "$?"
|
|
|
|
}
|
|
|
|
|
|
|
|
stop()
|
|
|
|
{
|
|
|
|
cgconfig_umount
|
|
|
|
}
|
|
|
|
|
|
|
|
cgconfig_umount()
|
|
|
|
{
|
|
|
|
local ctrl eq mnt_pnt mnt_pts
|
|
|
|
|
|
|
|
while read ctrl eq mnt_pnt; do
|
|
|
|
case "${ctrl}" in
|
|
|
|
(\#*) continue ;;
|
|
|
|
(mount*) mnt_pts=true;;
|
|
|
|
(\}*) mnt_pts= ;;
|
|
|
|
(*)
|
|
|
|
[ -n "${mnt_pts}" ] || continue
|
|
|
|
mnt_pnt="${mnt_pnt%;}"
|
|
|
|
ebegin "Unmounting ${mnt_pnt}"
|
|
|
|
umount "${mnt_pnt}"
|
|
|
|
eend "$?"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
done < "${CG_CONFIGFILE}"
|
|
|
|
}
|