2

У меня есть служба (tomcat), для запуска которой требуется sudo. Я сделал простой скрипт на удаленном сервере в /root/bin/test.sh

#!/bin/sh
sudo service tomcat start
read

(Сценарий должен делать и другие вещи, только для простоты). Когда я запускаю его непосредственно на удаленном сервере, tomcat запускается и продолжает работать на сервере после моего отключения.

Когда я запускаю его удаленно, процесс запускается (я вижу его, когда его ставят на паузу для "чтения"), но как только сценарий заканчивается, он исчезает. (во время паузы для чтения запустите эту команду локально)

ps -ef | grep tomcat

Я пробовал различные комбинации команд nohup, screen и & на командах как на локальном компьютере, так и в сценарии test.sh на удаленном компьютере, но не могу заставить его работать.

ssh -t gregb@111.111.111.111 "/root/bin/test.sh"
ssh -t gregb@111.111.111.111 "nohup /root/bin/test.sh"
ssh -t gregb@111.111.111.111 "nohup /root/bin/test.sh &"
ssh -t gregb@111.111.111.111 "screen /root/bin/test.sh &"

1 ответ1

0

Запустите сеанс экрана в фоновом режиме и запустите свой сценарий в нем. Это работает для меня с top, который является интерактивным "как sudo".

ssh -l jaroslav  10.3.0.7 screen -dmS foobar
ssh -l jaroslav  10.3.0.7 screen -S foobar -X stuff top^M

# ^M means [return]
#ssh -l jaroslav  10.3.0.7 screen -S foobar -X stuff top
#ssh -l jaroslav  10.3.0.7 screen -S foobar -X stuff $'\015'

# to resume
ssh -t -l jaroslav 10.3.0.7 screen -r -S foobar

Честно говоря, это своего рода обратный способ запуска службы, но я не совсем уверен, почему tomcat завершается, когда вы запускаете ssh в окно с помощью ssh -t. В конце концов, сервис работает в фоновом режиме, верно?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .