Estou essencialmente tentando combinar Criar tela e executar o comando sem anexar e outra resposta que me permitiu executar um script como outro usuário. Eu quero
Eu tenho um e dois para baixo. Ao testar três usando screen -d -m ./startServer.sh newUser 1
do shell, funciona muito bem. Quando eu coloco no script bash
mkuser newuser
...otherthings...
screen -d -m ./startServer.sh newuser 1
Não quer correr.
Quando eu chamo do nó usando spawn , ele mora no mesmo processo que o aplicativo do nó e o stdout nunca fecha, fazendo parecer que ele nunca entra em uma tela. O pior é que, quando eu fecho o nó do servidor1, o processo bash ainda existe em top
e eu tenho que assiná-lo.
Aqui está startServer.sh
#!/bin/bash
newuser=$1
maxram="$2""G"
echo Maxram $maxram
echo Creating server for user.
sudo -u $newuser bash << EOF
cd ~
while true
do
cd server
java -Xms512M -Xmx$maxram -jar server.jar
cd ..
sleep 30
done
EOF
echo Out
Tags sudo bash su gnu-screen shell