По сути, я пытаюсь комбинировать Создать экран и запустить команду, не прикрепляя и еще один ответ, который позволил мне запустить сценарий от имени другого пользователя. я бы хотел
У меня один и два внизу. При тестировании трех с использованием screen -d -m ./startServer.sh newUser 1
из оболочки, работает нормально. Когда я вставляю его в сценарий bash
mkuser newuser
...otherthings...
screen -d -m ./startServer.sh newuser 1
Бежать не хочет.
Когда я вызываю его из узла, используя порождать, он живет в том же процессе, что и приложение узла, и stdout никогда не закрывается, из-за чего создается впечатление, что он вообще никогда не выходит на экран. Что еще хуже, когда я закрываю узел с server1, процесс bash все еще существует в top
и я должен это убить.
Вот 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