Crie uma tela. Execute a referida tela como usuário. Desanexar

1

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

  1. SSH do servidor 1 - > Servidor 2 e execute um script
  2. O script faz várias coisas para preparar um novo usuário
  3. Depois que o script estiver concluído, inicie uma tela que execute um processo java e reinicie-o se ele falhar.

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
    
por quantomworks 12.11.2018 / 11:11

0 respostas