Назад | Перейти на главную страницу

Создайте экран. Запустите указанный экран как пользователь. Отсоединить

По сути, я пытаюсь комбинировать Создать экран и запустить команду, не прикрепляя и еще один ответ, который позволил мне запустить сценарий от имени другого пользователя. я бы хотел

  1. SSH с Сервера 1 -> Сервер 2 и запустите скрипт
  2. Пусть сценарий выполнит несколько действий для подготовки нового пользователя.
  3. После того, как сценарий будет выполнен, запустите экран, на котором выполняется java-процесс, и перезапустите его в случае сбоя.

У меня один и два внизу. При тестировании трех с использованием 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