Nimbin[12]?Mirrors & Forks / jhalfs / common/run-in-cgroup.sh

jhalfs git · trunk

jhalfs LFS build automation (mirror)

lfs mirror bash · first commit 2005-09-11 · last commit 2024-02-13 (2 years ago) · synced 3 days ago · upstream: git.linuxfromscratch.org/jhalfs

Python 78.4% Shell 19.8% Makefile 1.8%
git clone https://git.christianimmanuel.de/mirrors-forks/jhalfs.gitwget https://git.christianimmanuel.de/mirrors-forks/jhalfs/archive/jhalfs.tar.gz
common/run-in-cgroup.sh 1.1 KB · 36 lines raw
#!/bin/bash

if [ -z "$CPUSPEC" ] || [ "$#" -lt 1 ]; then
	echo "usage: CPUSPEC=... $0 command"
	exit 1
fi

ARGS="$@"

set +e

if type systemd-run >/dev/null 2>&1 ; then # systemd
   sudo systemd-run -G --pty -d --uid=$(whoami)    \
                    -p AllowedCPUs="$CPUSPEC"      \
                    --slice "user-$(whoami).slice" \
                    "$@"
elif type loginctl >/dev/null 2>&1 ; then #elogind
   sudo mkdir /sys/fs/cgroup/jhalfs
   sudo sh -c "echo +cpuset > /sys/fs/cgroup/cgroup.subtree_control"
   (
      sudo sh -c "echo $BASHPID > /sys/fs/cgroup/jhalfs/cgroup.procs"
      sudo sh -c "
         SESS_CGROUP=/sys/fs/cgroup/\$XDG_SESSION_ID
         echo $CPUSPEC > \$SESS_CGROUP/cpuset.cpus
	 ( echo \$BASHPID > \$SESS_CGROUP/cgroup.procs &&
		 exec sudo -u $(whoami) $ARGS )"
   )
   sudo rmdir /sys/fs/cgroup/jhalfs
else # no session manager
   sudo mkdir /sys/fs/cgroup/jhalfs
   sudo sh -c "echo +cpuset > /sys/fs/cgroup/cgroup.subtree_control"
   sudo sh -c "echo \"$CPUSPEC\" > /sys/fs/cgroup/jhalfs/cpuset.cpus"
   (sudo sh -c "echo $BASHPID > /sys/fs/cgroup/jhalfs/cgroup.procs" &&
      exec "$@")
   sudo rmdir /sys/fs/cgroup/jhalfs
fi