Fix (again) the run-in-cgroup.sh script
When using "sh << EOF", what is between this line and EOF runs with no attached terminal. But we need a terminal for running the build. So we have to use "sh -c ". But then nesting of double quotes, $, etc is too complicated. So run as root, and become back user only when exec'ing. For some reason $@ does not work, so use a variable set to $@.
This commit is contained in:
parent
09ac7fc548
commit
249d4ade20
1 changed files with 6 additions and 5 deletions
|
@ -5,6 +5,8 @@ if [ -z "$CPUSPEC" ] || [ "$#" -lt 1 ]; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
ARGS="$@"
|
||||
|
||||
set +e
|
||||
|
||||
if type systemd-run >/dev/null 2>&1 ; then # systemd
|
||||
|
@ -17,12 +19,11 @@ elif type loginctl >/dev/null 2>&1 ; then #elogind
|
|||
sudo sh -c "echo +cpuset > /sys/fs/cgroup/cgroup.subtree_control"
|
||||
(
|
||||
sudo sh -c "echo $BASHPID > /sys/fs/cgroup/jhalfs/cgroup.procs"
|
||||
sudo -u $(whoami) sh <<EOF
|
||||
sudo sh -c "
|
||||
SESS_CGROUP=/sys/fs/cgroup/\$XDG_SESSION_ID
|
||||
sudo sh -c "echo \\"$CPUSPEC\\" > \$SESS_CGROUP/cpuset.cpus"
|
||||
(sudo sh -c "echo \$BASHPID > \$SESS_CGROUP/cgroup.procs" &&
|
||||
exec $@)
|
||||
EOF
|
||||
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
|
||||
|
|
Reference in a new issue