У меня есть сервер tomcat, на котором запущено приложение весенней загрузки на хосте с использованием CentOS 8, которое подключается к почтовому клиенту с помощью SMTP. Проблема в том, что он резко закрывает соединение до того, как произойдет рукопожатие TLS с опцией STARTTLS. Он нормально работает с другими узлами под управлением CentOS 7 и Linux-сервера Oracle. Проблема не может быть в приложении, иначе оно не работало бы ни на каких узлах. Я проверил с помощью Wireshark, чтобы убедиться, что это наш узел приложения прерывает соединение. Вот стенограмма связи TCP, которую я записал с помощью tcpdump.
220 mta1.***.local Постфикс ESMTP
ЭХЛО ****
250-мта1.***.местный
250-ТРУБОПРОВОД
250-РАЗМЕР 69730304
250-ВРФЯ
250-ЭТРН
250-STARTTLS
250 РАСШИРЕННЫХ КОДОВ СОСТОЯНИЯ
250-8БИТИМИМ
250 ДСН
СТАРТЛС
220 2.0.0 Готов к запуску TLS
И ничего после этого. Прерывание соединения было внезапным, без тайм-аута или чего-то подобного. Я также проверил файл server.xml на предмет каких-либо настроек, там не было никакого упоминания о почте или smtp.
Я попробовал то же самое, используя openssl, и он работает, успешно запуская TLS через соединение smtp, так что это не проблема с сервером, который также не поддерживает эту опцию. Кто-нибудь знает, почему это могло произойти?
openssl s_client -connect smtp.****.gov.**:587 -starttls smtp
Мой файл catalina.sh
#!/бин/ш
Cygwin=ложь
Дарвин = ложь
ос400=ложь
hpux=ложь
регистр "`uname`" в
CYGWIN*) cygwin=true;;
Дарвин*) darwin=true;;
OS400*) os400=истина;;
HP-UX*) hpux=true;;
эсак
# разрешить ссылки - $0 может быть программной ссылкой
ПРГ="$0"
в то время как [ -h "$PRG" ]; делать
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
если выражение "$link": '/.*' > /dev/null; тогда
ПРГ="$ссылка"
еще
PRG=`имя_каталога "$PRG"`/"$link"
фи
сделано
# Получить стандартные переменные окружения
PRGDIR=`имя_каталога "$PRG"`
# Установите CATALINA_HOME, только если он еще не установлен
[ -z "$CATALINA_HOME" ] && CATALINA_HOME=`cd "$PRGDIR/.." >/dev/null; pwd`
# Скопируйте CATALINA_BASE из CATALINA_HOME, если она еще не установлена
[-z "$CATALINA_BASE" ] && CATALINA_BASE="$CATALINA_HOME"
# Убедитесь, что любые пользовательские переменные CLASSPATH не используются при запуске,
# но разрешить их указывать в setenv.sh, в редком случае, когда это необходимо.
ПУТЬ К КЛАССУ=
если [-r "$CATALINA_BASE/bin/setenv.sh"]; тогда
. "$ CATALINA_BASE/bin/setenv.sh"
Элиф [-r "$CATALINA_HOME/bin/setenv.sh"]; тогда
. "$ CATALINA_HOME/bin/setenv.sh"
фи
# Для Cygwin убедитесь, что пути указаны в формате UNIX, прежде чем что-либо трогать
если $cygwin; тогда
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
[ -n "$JRE_HOME" ] && JRE_HOME=`cygpath --unix "$JRE_HOME"`
[ -n "$CATALINA_HOME" ] && CATALINA_HOME=`cygpath --unix "$CATALINA_HOME"`
[ -n "$CATALINA_BASE" ] && CATALINA_BASE=`cygpath --unix "$CATALINA_BASE"`
[ -n "$CLASSPATH" ] && CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
фи
# Убедитесь, что ни CATALINA_HOME, ни CATALINA_BASE не содержат двоеточие
# так как он используется в качестве разделителя в пути к классам, а Java не предоставляет
# механизм экранирования, если в пути встречается один и тот же символ.
случай $CATALINA_HOME в
*:*) echo "Используя CATALINA_HOME: $CATALINA_HOME";
echo "Невозможно запустить, так как CATALINA_HOME содержит символ двоеточия (:)";
выход 1;
эсак
случай $CATALINA_BASE в
*:*) echo "Используем CATALINA_BASE: $CATALINA_BASE";
echo "Невозможно запустить, так как CATALINA_BASE содержит символ двоеточия (:)";
выход 1;
эсак
# Для ОС400
если $os400; тогда
# Установите приоритет задания на стандартный для интерактивного (интерактивный - 6) с помощью
# интерактивный приоритет - 6, вспомогательные потоки, отвечающие на запросы
# будут выполняться с тем же приоритетом, что и интерактивные задания.
COMMAND='chgjob job('$JOBNAME') runpty(6)'
система $ КОМАНДА
# Включить многопоточность
экспорт QIBM_MULTI_THREADED=Y
фи
# Получить стандартные переменные среды Java
если $os400; тогда
# -r будет работать только на os400, если файлы:
# 1. принадлежит пользователю
# 2. принадлежит ОСНОВНОЙ группе пользователя
# это не будет работать, если пользователь принадлежит к дополнительным группам
. "$ CATALINA_HOME"/bin/setclasspath.sh
еще
если [-r "$CATALINA_HOME"/bin/setclasspath.sh]; тогда
. "$ CATALINA_HOME"/bin/setclasspath.sh
еще
echo "Не удается найти $CATALINA_HOME/bin/setclasspath.sh"
echo "Этот файл необходим для запуска этой программы"
выход 1
фи
фи
# Добавляем дополнительные jar-файлы в CLASSPATH
если [ ! -z "$ПУТЬ К КЛАССУ" ] ; тогда
ПУТЬ К КЛАССУ = "ПУТЬ К КЛАССУ":
фи
CLASSPATH="$CLASSPATH""$CATALINA_HOME"/bin/bootstrap.jar
если [-z "$CATALINA_OUT"]; тогда
CATALINA_OUT=/home/*****/logs/catalinalogs/catalina.out
фи
если [ -z "$CATALINA_TMPDIR" ] ; тогда
# Определите java.io.tmpdir для использования в Catalina
CATALINA_TMPDIR="$CATALINA_BASE"/темп.
фи
# Добавьте tomcat-juli.jar в путь к классам
# tomcat-juli.jar может быть перезаписан для каждого экземпляра
если [ -r "$CATALINA_BASE/bin/tomcat-juli.jar" ] ; тогда
CLASSPATH=$CLASSPATH:$CATALINA_BASE/bin/tomcat-juli.jar
еще
CLASSPATH=$CLASSPATH:$CATALINA_HOME/bin/tomcat-juli.jar
фи
# Bugzilla 37848: если телетайп недоступен, не выводить на консоль
have_tty=0
если [-т 0]; тогда
have_tty=1
фи
# Для Cygwin переключите пути на формат Windows перед запуском java
если $cygwin; тогда
JAVA_HOME=`cygpath --absolute --windows "$JAVA_HOME"`
JRE_HOME=`cygpath --absolute --windows "$JRE_HOME"`
CATALINA_HOME=`cygpath --absolute --windows "$CATALINA_HOME"`
CATALINA_BASE=`cygpath --absolute --windows "$CATALINA_BASE"`
CATALINA_TMPDIR=`cygpath --absolute --windows "$CATALINA_TMPDIR"`
CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
[ -n "$JAVA_ENDORSED_DIRS" ] && JAVA_ENDORSED_DIRS=`cygpath --path --windows "$JAVA_ENDORSED_DIRS"`
фи
если [ -z "$JSSE_OPTS" ] ; тогда
JSSE_OPTS="-Djdk.tls.ephemeralDHKeySize=2048"
фи
JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"
# Регистрация пользовательских обработчиков URL
# Сделайте это здесь, чтобы пользовательские дескрипторы URL (в частности, 'war:...') можно было использовать в политике безопасности
JAVA_OPTS="$JAVA_OPTS-Djava.protocol.handler.pkgs=org.apache.catalina.webresources"
# Установите конфигурационный файл juli LogManager, если он присутствует и не было выполнено переопределение
если [-z "$LOGGING_CONFIG"]; тогда
если [-r "$CATALINA_BASE"/conf/logging.properties]; тогда
LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_BASE/conf/logging.properties"
еще
# Багзилла 45585
LOGGING_CONFIG="-Dnop"
фи
фи
если [-z "$LOGGING_MANAGER"]; тогда
LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
фи
# Установите UMASK, если он не был переопределен
если [-z "$UMASK"]; тогда
УМАСК="0027"
фи
umask $UMASK
# Java 9 больше не поддерживает java.endorsed.dirs
# системное свойство. Попробуйте использовать его, только если
# JAVA_ENDORSED_DIRS был установлен явно
# или CATALINA_HOME/endorsed существует.
ENDORSED_PROP=ignore.endorsed.dirs
если [-n "$JAVA_ENDORSED_DIRS"]; тогда
ENDORSED_PROP=java.endorsed.dirs
фи
если [-d "$CATALINA_HOME/одобрено"]; тогда
ENDORSED_PROP=java.endorsed.dirs
фи
# Сделать umask доступным при использовании org.apache.catalina.security.SecurityListener
JAVA_OPTS="$JAVA_OPTS -Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`"
если [-z "$USE_NOHUP"]; тогда
если $hpux; тогда
USE_NOHUP = "истина"
еще
USE_NOHUP="ложь"
фи
фи
сбросить _NOHUP
если [ "$USE_NOHUP" = "истина" ]; тогда
_NOHUP="нетуп"
фи
# Добавьте специальные параметры запуска JAVA 9, необходимые для Tomcat
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.lang=ВСЕ-БЕЗ ИМЕНИ"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.base/java.io=ВСЕ-БЕЗ ИМЕНИ"
JDK_JAVA_OPTIONS="$JDK_JAVA_OPTIONS --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED"
экспорт JDK_JAVA_OPTIONS
# ----- Выполнить запрошенную команду ---------------------------------------- -
# Bugzilla 37848: выводить это, только если у нас есть телетайп
если [ $have_tty -eq 1 ]; тогда
echo "Используя CATALINA_BASE: $CATALINA_BASE"
echo "Используя CATALINA_HOME: $CATALINA_HOME"
echo "Используя CATALINA_TMPDIR: $CATALINA_TMPDIR"
если [ "$1" = "отладка" ] ; тогда
echo "Используя JAVA_HOME: $JAVA_HOME"
еще
echo "Используя JRE_HOME: $JRE_HOME"
фи
echo "Используя CLASSPATH: $CLASSPATH"
если [ ! -z "$CATALINA_PID"]; тогда
echo "Используя CATALINA_PID: $CATALINA_PID"
фи
фи
если [ "$1" = "jpda" ] ; тогда
если [-z "$JPDA_TRANSPORT"]; тогда
JPDA_TRANSPORT="dt_socket"
фи
если [-z "$JPDA_ADDRESS"]; тогда
JPDA_ADDRESS="локальный:8000"
фи
если [-z "$JPDA_SUSPEND"]; тогда
JPDA_SUSPEND="n"
фи
если [-z "$JPDA_OPTS"]; тогда
JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,адрес=$JPDA_ADDRESS,сервер=y,suspend=$JPDA_SUSPEND"
фи
CATALINA_OPTS="$JPDA_OPTS $CATALINA_OPTS"
сдвиг
фи
# TODO: Bugzilla 63815
# В настоящее время это не работает (и не может работать), если значения, используемые в
# CATALINA_OPTS и/или JAVA_OPTS требуют заключения в кавычки. Видеть:
# https://bugs.openjdk.java.net/browse/JDK-8234808
если [ "$1" = "отладка" ] ; тогда
если $os400; тогда
echo "Команда отладки недоступна в OS400"
выход 1
еще
сдвиг
если [ "$1" = "-безопасность" ] ; тогда
если [ $have_tty -eq 1 ]; тогда
эхо "Использование диспетчера безопасности"
фи
сдвиг
exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" \
-путь к классам "$ ПУТЬ К КЛАССУ" \
-исходный путь "$ CATALINA_HOME"/../../java \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" старт
еще
exec "$_RUNJDB" "$LOGGING_CONFIG" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" \
-путь к классам "$ ПУТЬ К КЛАССУ" \
-исходный путь "$ CATALINA_HOME"/../../java \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
org.apache.catalina.startup.Bootstrap "$@" старт
фи
фи
Элиф ["$1" = "бег"]; тогда
сдвиг
если [ "$1" = "-безопасность" ] ; тогда
если [ $have_tty -eq 1 ]; тогда
эхо "Использование диспетчера безопасности"
фи
сдвиг
eval exec "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
-путь к классам "\"$ПУТЬ К КЛАССУ\"" \
-Djava.security.manager \
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" старт
еще
eval exec "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
-путь к классам "\"$ПУТЬ К КЛАССУ\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" старт
фи
Элиф ["$1" = "начало"]; тогда
если [ ! -z "$CATALINA_PID"]; тогда
если [-f "$CATALINA_PID"]; тогда
если [-s "$CATALINA_PID"]; тогда
echo "При запуске обнаружен существующий файл PID."
если [-r "$CATALINA_PID"]; тогда
PID=`кошка "$CATALINA_PID"`
ps -p $PID >/dev/null 2>&1
если [$? -экв 0 ] ; тогда
echo "Похоже, что Tomcat все еще работает с PID $PID.Старт прерван».
echo "Если следующий процесс не является процессом Tomcat, удалите файл PID и повторите попытку:"
ps -f -p $PID
выход 1
еще
echo "Удаление/очистка устаревшего файла PID."
rm -f "$ CATALINA_PID" >/dev/null 2>&1
если [$? != 0]; тогда
если [-w "$CATALINA_PID"]; тогда
кошка /dev/null > "$ CATALINA_PID"
еще
echo "Невозможно удалить или очистить устаревший файл PID. Старт прерван."
выход 1
фи
фи
фи
еще
echo "Невозможно прочитать файл PID. Старт прерван."
выход 1
фи
еще
rm -f "$ CATALINA_PID" >/dev/null 2>&1
если [$? != 0]; тогда
если [ ! -w "$CATALINA_PID"]; тогда
echo "Невозможно удалить или записать в пустой файл PID. Старт прерван."
выход 1
фи
фи
фи
фи
фи
сдвиг
нажмите "$CATALINA_OUT"
если [ "$1" = "-безопасность" ] ; тогда
если [ $have_tty -eq 1 ]; тогда
эхо "Использование диспетчера безопасности"
фи
сдвиг
eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
-путь к классам "\"$ПУТЬ К КЛАССУ\"" \
-Djava.security.manager \
-Djava.security.policy=="\"$CATALINA_BASE/conf/catalina.policy\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" старт \
>> "$CATALINA_OUT" 2>&1 "&"
еще
eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" \
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
-путь к классам "\"$ПУТЬ К КЛАССУ\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" старт \
>> "$CATALINA_OUT" 2>&1 "&"
фи
если [ ! -z "$CATALINA_PID"]; тогда
эхо $! > "$ КАТАЛИНА_PID"
фи
echo "Tomcat запущен."
Элиф ["$1" = "стоп"]; тогда
сдвиг
СОН=5
если [ ! -z "$1" ]; тогда
эхо $1 | grep "[^0-9]" >/dev/null 2>&1
если [$? -gt 0]; тогда
СОН=$1
сдвиг
фи
фи
СИЛА=0
если [ "$1" = "-force" ]; тогда
сдвиг
СИЛА=1
фи
если [ ! -z "$CATALINA_PID"]; тогда
если [-f "$CATALINA_PID"]; тогда
если [-s "$CATALINA_PID"]; тогда
kill -0 `кот "$CATALINA_PID"` >/dev/null 2>&1
если [$? -gt 0]; тогда
echo "Файл PID найден, но либо соответствующий процесс не найден, либо текущий пользователь не имеет разрешения на остановку процесса. Остановка прервана."
выход 1
фи
еще
echo "Файл PID пуст и был проигнорирован."
фи
еще
echo "\$CATALINA_PID был установлен, но указанный файл не существует. Работает ли Tomcat? Остановка прервана."
выход 1
фи
фи
eval "\"$_RUNJAVA\"" $LOGGING_MANAGER "$JAVA_OPTS" \
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
-путь к классам "\"$ПУТЬ К КЛАССУ\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap "$@" остановить
# остановка не удалась. Порт выключения отключен? Попробуйте обычное убийство.
если [$? != 0]; тогда
если [ ! -z "$CATALINA_PID"]; тогда
echo "Команда остановки не удалась. Попытка сообщить процессу об остановке с помощью сигнала ОС."
kill -15 `кот "$CATALINA_PID"` >/dev/null 2>&1
фи
фи
если [ ! -z "$CATALINA_PID"]; тогда
если [-f "$CATALINA_PID"]; тогда
пока [ $SLEEP -ge 0 ]; делать
kill -0 `кот "$CATALINA_PID"` >/dev/null 2>&1
если [$? -gt 0]; тогда
rm -f "$ CATALINA_PID" >/dev/null 2>&1
если [$? != 0]; тогда
если [-w "$CATALINA_PID"]; тогда
кошка /dev/null > "$ CATALINA_PID"
# Если Tomcat остановился, не пытайтесь принудительно остановить с пустым файлом PID
СИЛА=0
еще
echo "Файл PID не может быть удален или очищен."
фи
фи
echo "Кот остановился."
сломать
фи
если [$SLEEP -gt 0]; тогда
спать 1
фи
если [ $SLEEP -eq 0 ]; тогда
echo "Tomcat не остановился вовремя."
если [ $FORCE -eq 0 ]; тогда
echo "Файл PID не был удален."
фи
echo "Для облегчения диагностики дамп потока был записан в стандартный вывод."
kill -3 `кот "$CATALINA_PID"`
фи
SLEEP=`выражение $SLEEP - 1 `
сделано
фи
фи
KILL_SLEEP_INTERVAL=5
если [ $FORCE -eq 1 ]; тогда
если [-z "$CATALINA_PID"]; тогда
echo "Не удалось убить: \$CATALINA_PID не установлен"
еще
если [-f "$CATALINA_PID"]; тогда
PID=`кошка "$CATALINA_PID"`
echo "Убить Tomcat с помощью PID: $PID"
убить -9 $PID
пока [ $KILL_SLEEP_INTERVAL -ge 0 ]; делать
kill -0 `кот "$CATALINA_PID"` >/dev/null 2>&1
если [$? -gt 0]; тогда
rm -f "$ CATALINA_PID" >/dev/null 2>&1
если [$? != 0]; тогда
если [-w "$CATALINA_PID"]; тогда
кошка /dev/null > "$ CATALINA_PID"
еще
echo "Файл PID не может быть удален."
фи
фи
echo "Процесс Tomcat был убит."
сломать
фи
если [$KILL_SLEEP_INTERVAL -gt 0]; тогда
спать 1
фи
KILL_SLEEP_INTERVAL=`выражение $KILL_SLEEP_INTERVAL - 1 `
сделано
если [ $KILL_SLEEP_INTERVAL -lt 0 ]; тогда
echo "Tomcat еще не полностью уничтожен. Возможно, процесс ожидает какого-то системного вызова или может быть БЕСПЕРЕБОЙНЫМ."
фи
фи
фи
фи
Элиф ["$1" = "configtest"]; тогда
eval "\"$_RUNJAVA\"" $LOGGING_MANAGER "$JAVA_OPTS" \
-D$ENDORSED_PROP="\"$JAVA_ENDORSED_DIRS\"" \
-путь к классам "\"$ПУТЬ К КЛАССУ\"" \
-Dcatalina.base="\"$CATALINA_BASE\"" \
-Dcatalina.home="\"$CATALINA_HOME\"" \
-Djava.io.tmpdir="\"$CATALINA_TMPDIR\"" \
org.apache.catalina.startup.Bootstrap configtest
результат=$?
если [ $result -ne 0 ]; тогда
echo "Обнаружена ошибка конфигурации!"
фи
выход $результат
Элиф ["$1" = "версия"]; тогда
"$_RUNJAVA" \
-classpath "$ CATALINA_HOME/lib/catalina.jar" \
org.apache.catalina.util.ServerInfo
еще
echo "Использование: catalina.sh (команды...)"
эхо "команды:"
если $os400; тогда
echo "debug Запустите Catalina в отладчике (недоступно в OS400)"
echo "debug -security Отладка Catalina с помощью диспетчера безопасности (недоступно в OS400)"
еще
echo "Отладка Запустите Catalina в отладчике"
echo "debug -security Отладка Catalina с помощью менеджера безопасности"
фи
echo "jpda start Запустить Catalina под отладчиком JPDA"
echo "запустить Start Catalina в текущем окне"
echo " run -security Начать в текущем окне с менеджером безопасности"
echo "запустить Start Catalina в отдельном окне"
echo " start -security Запустить в отдельном окне с менеджером безопасности"
echo "stop Stop Catalina, ожидание завершения процесса до 5 секунд"
echo "stop n Stop Catalina, ожидание завершения процесса до n секунд"
echo "stop -force Stop Catalina, подождите до 5 секунд, а затем используйте команду kill -KILL, если она все еще работает"
echo "stop n -force Остановите Catalina, подождите до n секунд, а затем используйте команду kill -KILL, если она еще работает"
echo " configtest Запустите базовую проверку синтаксиса в server.xml - проверьте код выхода для получения результата"
echo "версия Какую версию tomcat вы используете?"
echo "Примечание: ожидание завершения процесса и использование параметра -force требуют определения \$CATALINA_PID"
выход 1
фи
Мой файл setenv.sh
# -Xms/XMX
# Xms Устанавливает начальный размер кучи
# Xmx устанавливает максимальный размер кучи.
# http://stackoverflow.com/questions/16087153/what-happens-when-we-set-xmx-and-xms-equal-size
# http://crunchify.com/jvm-tuning-heapsize-stacksize-garbage-collection-fundamental/
экспорт JAVA_OPTS="$JAVA_OPTS -Xms3072m -Xmx3072m"