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

Запуск и завершение работы tomcat через ssh

Обновлено

Я обнаружил, что путь jdk, который он использует, неправильный. eval: 1: /opt/Java/jdk1.6.0_25/jre/bin/java: not found то Java должен быть в нижнем регистре java, как это случилось? Когда я запускаю этот скрипт прямо на сервере, это нормально.


Я пытаюсь запустить или выключить Tomcat через удаленный клиент.

На моем сервере у меня есть 3 разных кота: tomcat1, tomcat2 и tomcat3.

Во-первых, я пробовал бежать tomcat_path/bin/shutdown.sh чтобы остановить его через ssh, и команда

ssh jake@1xx.3x.2x.1xx "cd /home/jake/tomcat2/bin;exec bash ./shutdown.sh"

обе " и ' пробовали, но не работают, вывод

eval: 1: /opt/Java/jdk1.6.0_25/jre/bin/java: not found

похоже, что сценарий оболочки работает на моем локальном клиенте, потому что на сервере он имеет этот файл.

Есть ли способ правильно запустить сценарий оболочки на удаленном сервере?

обновлено

Я бегал

ssh jake@1xx.xx.25.100 "sh -x /home/jake/tomcat/bin/shutdown.sh > /home/jake/tomcat.log 2>&1"

а вывод в tomcat.log:

+ PRG=/home/jake/tomcat/bin/shutdown.sh
+ [ -h /home/jake/tomcat/bin/shutdown.sh ]
+ dirname /home/jake/tomcat/bin/shutdown.sh
+ PRGDIR=/home/jake/tomcat/bin
+ EXECUTABLE=catalina.sh
+ [ ! -x /home/jake/tomcat/bin/catalina.sh ]
+ exec /home/jake/tomcat/bin/catalina.sh stop

eval: 1: /opt/Java/jdk1.6.0_25/jre/bin/java: not found

Я обнаружил, что путь jdk, который он использует, неправильный. eval: 1: /opt/Java/jdk1.6.0_25/jre/bin/java: не найдено, Java должна быть в нижнем регистре java, как это случилось? Когда я запускаю этот скрипт прямо на сервере, это нормально.

Поскольку вы где-то установили неправильные переменные среды (может быть ~/.bashrc). bash читает разные файлы запуска в зависимости от типа оболочки. Имейте в виду, что:

  • ssh user@host 'command' это неинтерактивная оболочка
  • в то время как ssh user@host и запускаем команду в интерактивной оболочке.

http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files

Похоже, что не установлена ​​странная переменная env. Ради интереса ... попробуйте найти любой экземпляр "/ opt / Java" ... "простой" способ сделать это -

find /etc -type f |grep -v ' ' | xargs grep /opt/Java

Это может указывать на плохой файл конфигурации в вашей системе.

Также может быть странный (очень странный) шанс ... что у вас есть странная конфигурация ssh, которая позволяет передавать (и устанавливать) клиентские переменные env на сервер. [Редкая ситуация ... но теоретически возможна]