Tomcat запустится, если я войду в удаленный сервер напрямую и вызову его, но не тогда, когда я попытаюсь вызвать его через удаленную команду, используя ssh - PullRequest
1 голос
/ 29 октября 2011

Я пытаюсь запустить tomcat, вызвав скрипт ./start в директории tomcat_user.Это работает, когда я захожу на сервер напрямую и вызываю /home/tomcat_user/start, но не работает, если я использую это с другого хоста:

ssh user@server '/home/tomcat_user/start'

Я считаю, что это как-то связано с исполняемыми файламив начале (возможно, как переменные окружения и т. д.), когда вход на удаленный сервер напрямую отличается от того, что происходит внутри ssh, как описано выше

Есть ли способ добиться такого же точного поведения для регистрации непосредственно на сервере и выполнения удаленной команды, используя ssh, как описано выше, для автоматизации части регистрации?

Большое спасибо.


Хорошо, после прочтения о nohup, хотя это отличное объяснение, я боюсь, что это не проблема, поскольку tomcat, похоже, не начинает с самого начала (и не убивается, когдаssh закончился (я на самом деле делаю сон 500 в конце команды, переданной ssh, но tomcat все равно не запускается)).Чем больше я думаю об этом, тем больше я думаю, что это переменные env, но я точно не знаю, что.В домашнем каталоге tomcat_user нет .bashrc или .profile, и я не слишком знаком с ними.

Моя причина сказать, что это переменные env, заключается в том, что когда я вхожу в систему напрямую и запускаю tomcat, консоль записывает все переменные env (такие как TOMCAT_HOME, CATALINA_HOME, JAVA_HOME и т. Д.), А затем выдает «Запуск tomcat»,но когда я делаю это через ssh, ни одна из переменных env не печатается.Я получаю только «Стартовый кот».Я полагаю, я могу достаточно легко установить эти переменные в моем сценарии ssh, но я не уверен, что это единственные переменные, поэтому мне было интересно, могу ли я имитировать точно такое же поведение ведения журнала напрямую, в пределах моего сценария, переданного в ssh,

Все еще в замешательстве и не знаю, как поступить.Помощь приветствуется!Спасибо,


При попытке запустить tomcat с запуском nohup, и кажется, что он не может продолжиться, так как он печатает использование (не уверен, как интерпретировать использование и как запустить tomcat. Должен ли яиспользовать запуск по-другому, чтобы запустить Tomcat?).Вот содержимое nohup.out:

Запуск tomcat_user ...

Использование CATALINA_BASE: / prod / web / edmsserv / current

Использование CATALINA_HOME: / opt / tomcat-6.0.18

Использование CATALINA_TMPDIR: / prod / web / edmsserv / current / temp

Использование CATALINA_OPTS: -DappName = edmsserv -server -Xmx768m -XX: PermSize = 256m -XX: MaxPermSize= 256m -DEXPD_APPL_DOMAIN = QA -XX: + UseG1GC -XX: + UnlockExperimentalVMOptions -XX: -UseStringCache -XX: + AggressiveOpts -XX: MaxInlineSize = 75 -XX: FreqInlineSize = 700 -XX = 200XXX: Интерпретор:-XX: OnStackReplacePercentage = 80 -XX: ReservedCodeCacheSize = 128 м: gc -XX: + PrintGCDetails -XX: + PrintGCTimeStamps -Dsun.net.inetaddr.ttl = 0 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate = true -Dcom.sun.management.jmxremote.port = 26236 -Dcom.sun.management.jmxremote.access.file = / export / home / edmsserv / .jmxremote.access -Dcom.sun.management.jmxremote.password.file = / export / home / edmsserv / .jmxremote.password -Dcom.sun.management.jmxremote.ssl = false

Использование CLASSPATH:: /opt/tomcat-6.0.18/bin/bootstrap.jar: /export/home/db2inst3/sqllib/java/db2jcc.jar: / export / home /db2inst3 / sqllib / java / sqlj.zip: / export / home / db2inst3 / sqllib / function: /export/home/db2inst3/sqllib/java/db2jcc_license_cu.jar:.:

Использование JRE_HOME: / optjava-1.6.0_26

использование: pargs [-acexF] {pid |core} ...

(показать аргументы процесса и среду)

-a: показать аргументы процесса (по умолчанию)

-c: интерпретировать символы как 7-битные ascii независимолокали

-e: показать переменные среды

-l: отображать аргументы в виде командной строки

-x: показывать вспомогательные записи вектора

-F: принудительное получение целевого процесса

1 Ответ

1 голос
/ 29 октября 2011

Можете ли вы попробовать использовать следующую команду вместо этого?

ssh user @ server 'cd / home / tomcat_user;nohup / home / tomcat_user / start & '

Это создаст файл nohup.out в каталоге / home / tomcat_user.В идеале эта команда должна решить проблему;если нет, то nohup.out предоставит подробную информацию о том, почему произошел сбой.

Если я правильно помню, ssh должен инициализировать переменные env.Если вы считаете, что переменные среды вызывают проблему, введите следующую команду для запуска сценария запуска (при условии, что вы используете оболочку bash).

ssh user @ server 'cd / home / tomcat_user;,./bash_profile;nohup / home / tomcat_user / start & '

...