multi user containerization* upgrades
This commit is contained in:
parent
7891b676eb
commit
d5e61f6922
|
@ -1 +1,2 @@
|
|||
api/api
|
||||
lxc/i
|
||||
|
|
20
lxc/execute
20
lxc/execute
|
@ -24,6 +24,17 @@ chmod 777 $basepath/tmp/$epoch
|
|||
cat $2 > $basepath$filepath
|
||||
echo "${@:3}" > $basepath$argpath
|
||||
|
||||
# process incrementor
|
||||
oldinc=$(cat $dir/i | awk '{$1=$1};1')
|
||||
newinc=$(expr $oldinc + 1)
|
||||
|
||||
if (( newinc >= 151 )); then
|
||||
newinc=1
|
||||
echo 1 > $dir/i
|
||||
else
|
||||
echo $newinc > $dir/i
|
||||
fi
|
||||
|
||||
bin=
|
||||
case "$lang" in
|
||||
"python2")
|
||||
|
@ -67,7 +78,14 @@ case "$lang" in
|
|||
exit
|
||||
esac
|
||||
|
||||
# runner
|
||||
lxc-attach -n piston -- \
|
||||
/bin/bash -c "PATH=/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin bash /exec/$bin $epoch 2>&1 | head -c 65536"
|
||||
/bin/bash -c "\
|
||||
PATH=/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin \
|
||||
bash /exec/$bin $newinc $epoch 2>&1 | head -c 65536"
|
||||
|
||||
# process janitor
|
||||
lxc-attach -n piston -- \
|
||||
/bin/bash -c "for i in {1..2000}; do pkill -u runner$newinc --signal SIGKILL; done" > /dev/null 2>&1 &
|
||||
|
||||
rm -rf $basepath/tmp/$epoch
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
cd /tmp/$1
|
||||
cd /tmp/$2
|
||||
timeout -s KILL 10 gcc -o binary -x c code.code
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' ./binary"
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 ./binary"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
cd /tmp/$1
|
||||
cd /tmp/$2
|
||||
timeout -s KILL 10 g++ -o binary -x c++ code.code
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' ./binary"
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 ./binary"
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
cd /tmp/$1
|
||||
cd /tmp/$2
|
||||
timeout -s KILL 10 mcs $(echo code.code | sed 's/\///') -out:binary
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' mono binary"
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 mono binary"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
cd /tmp/$1
|
||||
cd /tmp/$2
|
||||
cp code.code interim.go
|
||||
file="interim.go"
|
||||
GOROOT=/usr/lib/go timeout -s KILL 10 go build $file
|
||||
file=${file%%.*}
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' ./$file"
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 ./$file"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
cd /tmp/$1
|
||||
cd /tmp/$2
|
||||
cp code.code interim.java
|
||||
name=$(cat interim.java | grep -Eo 'public\s+class\s+([A-Za-z0-9]+)' | sed -n 's/ */ /gp' | cut -d' ' -f3)
|
||||
mv interim.java $name.java
|
||||
timeout -s KILL 10 javac $name.java
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' java $name"
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 java $name"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
cd /tmp/$1
|
||||
cd /tmp/$2
|
||||
timeout -s KILL 10 nasm -f elf64 -o binary.o code.code
|
||||
timeout -s KILL 10 ld binary.o -o binary
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' ./binary"
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 ./binary"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
cd /tmp/$1
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' nodejs code.code"
|
||||
cd /tmp/$2
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 nodejs code.code"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
cd /tmp/$1
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' php code.code"
|
||||
cd /tmp/$2
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 php code.code"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
cd /tmp/$1
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' python2 code.code"
|
||||
cd /tmp/$2
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 python2 code.code"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
cd /tmp/$1
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' python3.6 code.code"
|
||||
cd /tmp/$2
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 python3.6 code.code"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
cd /tmp/$1
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' Rscript code.code"
|
||||
cd /tmp/$2
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 Rscript code.code"
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
cd /tmp/$1
|
||||
timeout -s KILL 3 runuser ubuntu -c "cat args.args | xargs -d '\n' ruby code.code"
|
||||
cd /tmp/$2
|
||||
runuser -l runner$1 -c "cd /tmp/$2 ; cat args.args | xargs -d '\n' timeout -s KILL 3 ruby code.code"
|
||||
|
|
|
@ -15,11 +15,16 @@ sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu/http:\/\/mirror.math.princeton.edu
|
|||
apt-get update
|
||||
apt-get -y install tzdata nano dpkg-dev build-essential python python3 ruby nodejs golang php7.2 r-base mono-complete nasm openjdk-8-jdk
|
||||
|
||||
# apply limits
|
||||
echo 'ubuntu soft nproc 16' >> /etc/security/limits.conf
|
||||
echo 'ubuntu hard nproc 16' >> /etc/security/limits.conf
|
||||
echo 'ubuntu soft nofile 1024' >> /etc/security/limits.conf
|
||||
echo 'ubuntu hard nofile 1024' >> /etc/security/limits.conf
|
||||
# create users and apply limits
|
||||
for i in {1..150}; do
|
||||
#userdel runner$i
|
||||
useradd -M runner$i
|
||||
usermod -d /tmp runner$i
|
||||
echo "runner$i soft nproc 64" >> /etc/security/limits.conf
|
||||
echo "runner$i hard nproc 64" >> /etc/security/limits.conf
|
||||
echo "runner$i soft nofile 2048" >> /etc/security/limits.conf
|
||||
echo "runner$i hard nofile 2048" >> /etc/security/limits.conf
|
||||
done
|
||||
|
||||
# remove home dir
|
||||
rm -rf /home/ubuntu
|
||||
|
|
Loading…
Reference in New Issue