На наших Linux-серверах у нас есть несколько пользователей, которые запускают tomcat.
В настоящее время мы используем команды уничтожения процесса, чтобы убить кота соответствующего пользователя, вместо использования shutdown.sh
Есть ли недостатки у такого подхода?
Смотря что kill
сигнал, который вы используете:
Если вы используете TERM
(числовой эквивалент kill -15
), теоретически вы позволяете java
процесс сигнализирует своим потомкам и завершается правильным образом.
Если вы используете KILL
(kill -9
), ты не, и вы оставили всякие временные файлы, сокетыи т.д ... позади.
Тем не менее, tomcat
имеет свой собственный механизм для правильного завершения работы, а именно вызов RMI, который вы должны использовать либо напрямую, либо с помощью интерфейса вашей операционной системы: service
, start
, systemctl
или любой другой.
Если вы не можете этого сделать по какой-либо причине, вы можете использовать некоторую помощь от оболочки, например tanukiwrapper
или supervisord
, который также имеет веб-интерфейс.
Нет никакой разницы в поведении, если вы используете сценарий выключения Tomcat или kill -15. Конечный результат точно такой же - чистое выключение. Единственное отличие - это небольшое различие в пути кода, который запускает процесс завершения работы.