55 lines
1.2 KiB
Bash
Executable File
55 lines
1.2 KiB
Bash
Executable File
#!/bin/sh
|
|
# Copyright 2011 Canonical, Inc
|
|
# 2014 Tianon Gravi
|
|
# Author: Serge Hallyn <serge.hallyn@canonical.com>
|
|
# Tianon Gravi <admwiggin@gmail.com>
|
|
set -e
|
|
|
|
# for simplicity this script provides no flexibility
|
|
|
|
# if cgroup is mounted by fstab, don't run
|
|
# don't get too smart - bail on any uncommented entry with 'cgroup' in it
|
|
if grep -v '^#' /etc/fstab | grep -q cgroup; then
|
|
echo 'cgroups mounted from fstab, not mounting /sys/fs/cgroup'
|
|
exit 0
|
|
fi
|
|
|
|
# kernel provides cgroups?
|
|
if [ ! -e /proc/cgroups ]; then
|
|
exit 0
|
|
fi
|
|
|
|
# if we don't even have the directory we need, something else must be wrong
|
|
if [ ! -d /sys/fs/cgroup ]; then
|
|
exit 0
|
|
fi
|
|
|
|
# mount /sys/fs/cgroup if not already done
|
|
if ! mountpoint -q /sys/fs/cgroup; then
|
|
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
|
|
fi
|
|
|
|
cd /sys/fs/cgroup
|
|
|
|
# get/mount list of enabled cgroup controllers
|
|
for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
|
|
mkdir -p $sys
|
|
if ! mountpoint -q $sys; then
|
|
if ! mount -n -t cgroup -o $sys cgroup $sys; then
|
|
rmdir $sys || true
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# example /proc/cgroups:
|
|
# #subsys_name hierarchy num_cgroups enabled
|
|
# cpuset 2 3 1
|
|
# cpu 3 3 1
|
|
# cpuacct 4 3 1
|
|
# memory 5 3 0
|
|
# devices 6 3 1
|
|
# freezer 7 3 1
|
|
# blkio 8 3 1
|
|
|
|
exit 0
|