Запустите jar на удаленной машине как фоновый процесс через ssh - PullRequest
2 голосов
/ 31 января 2020

Я хочу запустить jar в качестве фонового процесса на удаленной машине через соединение s sh. На удаленном компьютере есть сценарий bash для выполнения jar

#!/bin/sh
export JAVA_HOME=/location/of/java/
export PATH=$JAVA_HOME/bin:$PATH
nohup java -jar jar_name.jar config.properties &

Если я выполняю вышеуказанный сценарий непосредственно с удаленного компьютера (sudo ./start_script.sh), jar запускается как фоновый процесс, и стандартный вывод направляется на nohup.out в той же папке, что и jar. Но когда я запускаю скрипт с локальной машины: ssh vm_name 'sudo ./start_script.sh', процесс запускается. но он блокируется, и вывод направляется на локальный терминал.

есть ли способ добиться этого?

РЕДАКТИРОВАТЬ: мне нужно запустить скрипт как root, а также передать параметры в скрипт, добавил путь-заполнитель для JAVA_HOME, чтобы избежать путаницы

Ответы [ 2 ]

1 голос
/ 31 января 2020

Вы должны указать ssh для подключения как терминал .

ssh vm_name -t 'sudo ./start_script.sh'

Вероятно, вы понимаете, что вы не являетесь терминалом и соответственно изменить поведение.

1 голос
/ 31 января 2020

Та же проблема, что и здесь:

https://serverfault.com/questions/955268/what-is-the-difference-between-running-a-command-in-ssh-shell-manually-vs-runnin

Попробуйте

$ ssh user@host bash -l ./build.sh
...