У меня проблемы с экземпляром tomcat. Я использую apache-tomcat-6.0.20 для linux. Моя ОС - CENTOS.
когда я выполняю команду
# bin/shutdown.sh
Он не закрывает процесс, в котором запущен tomcat.
Может ли кто-нибудь дать мне некоторое представление; что происходит с процессом.
Я видел эту проблему несколько раз с Tomcat. Пара вещей, которые могут помочь:
Ваша система не выключается? (например: Зависание?) Если нет, то это определенно завершает процесс, но не так, как вам хотелось бы. И сценарий запуска был написан вами или входил в комплект? Правильно ли предположить, что вы поработали со скриптами /etc/init.d? Вы захотите дать нам немного больше информации.
Скорее всего, вам необходимо зарегистрировать процесс с помощью chkconfig. Просто поместить Kscripts в /etc/rc#.d/ недостаточно, так как я не верю, что они вызываются, если chkconfig не знает о них.
По сути, вашему скрипту нужны строки вверху, в которых говорится
# chkconfig: 345 99 10 # description: This is what my script does.
В первой строке указаны уровни запуска, на которых следует запускать, а также приоритетные уровни запуска и завершения. (Он создавал бы скрипты S99 в /etc/rc3.d, /etc/rc4.d и /etc/rc5.d, и скрипты K10 во всех остальных)
Вдобавок к этому chkconfig проверит / var / lock / subsys /, чтобы увидеть, есть ли там файл блокировки для вашей службы. Поэтому прикоснитесь к файлу с тем же именем, что и ваша служба, в этом каталоге при запуске и удалите его при выходе.
Предполагая, что в вашем скрипте есть перечисленные выше элементы, его необходимо зарегистрировать с помощью chkconfig. Чтобы добавить скрипт, сделайте chkconfig --add <name>
. Просто убедитесь, что сценарий находится в /etc/init.d/ с правильным именем.
У вас установлено профилирование? У Tomcat есть известная проблема с профилированием, заключающаяся в том, что он не выключается должным образом, если он установлен. В сценарии shutdown.sh есть обходной мод, но я все еще ищу его сам. Это в Tomcat 7, не знаю, есть ли это в Tomcat 6.
Лучший способ выключить tomcat - использовать сценарий выключения. Но многие люди сталкиваются с проблемами и в конечном итоге убивают процесс вручную.
Сценарий выключения работает правильно только в том случае, если сценарии, которые будут затронуты во время процесса выключения:
это не сработает, если пользователь принадлежит к вторичным группам.
Если вам нужно убить процесс, вы можете использовать указанный ниже скрипт, чтобы сделать его одной командой (найти процесс и затем убить его). Просто вставьте скрипт и запускайте его всякий раз, когда вы хотите убить запущенного tomcat.
#Finds the tomcat process id
ps aux | grep tomcat | grep JavaVirtualMachines | awk -F " " '{print $2}' > tomcatProcessID
#Kills the process id returned from above mentioned command.
kill -9 `cat tomcatProcessID` && tput setaf 3 && echo "Tomcat killed Successfully" ;rm -rf tomcatProcessID
#Not a mandatory command.
#Used to show all the remaining processes with 'tomcat' keyword in it.
#To inform on the console that the tomcat (running ess or indexer) is killed.
ps aux | grep tomcat | grep -v grep | grep -v killtomcat
Если хотите, можете добавить ps aux | grep tomcat | grep -v grep | grep -v killtomcat
в конце, чтобы показать оставшиеся процессы tomcat после попытки уничтожения.
Я надеюсь, что это помогает.