Вопрос или проблема
Я работаю на сервере Linux.
Я хочу узнать, существует ли PID для каждой службы Tomcat, работающей на каком-либо сервере.
Если PID для конкретной службы Tomcat существует, можем ли мы найти имя службы, соответствующее этому PID?
Можем ли мы перечислить все службы Tomcat, работающие на сервере?
ps -ef |grep tomcat
sun 5144 1 0 10:21 pts/1 00:00:06 /Java/jdk/bin/java
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/java/tomcat/common/endorsed -classpath :/java/tomcat/bin/bootstrap.jar:/java/tomcat/bin/commons-logging-api.jar
-Dcatalina.base=/java/tomcat -Dcatalina.home=/java/tomcat -Djava.io.tmpdir=/java/tomcat/temp org.apache.catalina.startup.Bootstrap start
PID=5144
Вы можете использовать netstat, чтобы захватить PID. Но это будет зависеть от того, работает ли служба на сервере. netstat захватит порт, к которому она привязывается, а также PID и имя программы. Предположим, что Tomcat работает на порту 80, вы можете попробовать следующее:
netstat -tulnp | grep '80'
Чтобы получить все идентификаторы процессов Tomcat с их расположением каталогов, просто выполните следующую команду:
ps -ef | grep ‘tomcat’
Выполнив вышеуказанную команду, вы получите список запущенных процессов Tomcat с их идентификаторами процессов и путями к каталогам и т. д., как показано ниже:
# ps -ef | grep 'tomcat'
tomcat 1477 1 0 Aug02 ? 00:18:16 /usr/java/jdk-17.0.10//bin/java -Djava.util.logging.config.file=/home/tomcatservers/uat-apache-tomcat-10.1.25/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -classpath /home/tomcatservers/uat-apache-tomcat-10.1.25/bin/bootstrap.jar:/home/tomcatservers/uat-apache-tomcat-10.1.25/bin/tomcat-juli.jar -Dcatalina.base=/home/tomcatservers/uat-apache-tomcat-10.1.25 -Dcatalina.home=/home/tomcatservers/uat-apache-tomcat-10.1.25 -Djava.io.tmpdir=/home/tomcatservers/uat-apache-tomcat-10.1.25/temp org.apache.catalina.startup.Bootstrap start
tomcat 1478 1 0 Aug02 ? 00:41:12 /usr/java/jdk-17.0.10//bin/java -Djava.util.logging.config.file=/home/tomcatservers/apache-tomcat-10.1.25/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED -classpath /home/tomcatservers/apache-tomcat-10.1.25/bin/bootstrap.jar:/home/tomcatservers/apache-tomcat-10.1.25/bin/tomcat-juli.jar -Dcatalina.base=/home/tomcatservers/apache-tomcat-10.1.25 -Dcatalina.home=/home/tomcatservers/apache-tomcat-10.1.25 -Djava.io.tmpdir=/home/tomcatservers/apache-tomcat-10.1.25/temp org.apache.catalina.startup.Bootstrap start
Ответ или решение
Да, для каждого сервиса Apache Tomcat на сервере Linux существует уникальный идентификатор процесса (PID), что позволяет однозначно идентифицировать каждую запущенную службу. PID — это числовой идентификатор, присваиваемый каждому процессу при его запуске в операционной системе.
Чтобы узнать, какие tomcat-сервисы в настоящее время работают на сервере, и получить их PID, вы можете использовать следующую команду:
ps -ef | grep 'tomcat'
Эта команда вернёт список всех процессов, связанных с Tomcat, включая PID и различные параметры, такие как путь к каталогу (например, -Dcatalina.base
) и другие конфигурации, которые могут помочь идентифицировать конкретную установку Tomcat.
Теперь, если вы хотите сопоставить PID с именем службы или местоположением установки, вы можете обратиться к параметрам -Dcatalina.base
или -Dcatalina.home
, которые обычно включают путь к каталогу Tomcat на сервере. Эти параметры могут помочь вам понять, какой именно экземпляр Tomcat используется, если на сервере развернуто несколько версий или конфигураций Tomcat.
Также можете использовать netstat
для определения PID процесса, привязанного к определённому порту. Например, если предполагается, что Tomcat использует порт 80, можно выполнить:
netstat -tulnp | grep ':80'
Это позволит вам увидеть, какой процесс слушает на этом порту, вместе с его PID и именем программы.
С точки зрения SEO-оптимизации, при построении поисковых запросов учитывайте ключевые термины, такие как "PID Tomcat", "поиск PID Tomcat Linux", или "PID томкат как найти". Подобные поисковые фразы могут сделать ваш текст более видимым для целевой аудитории, ищущей конкретные технические решения.
Таким образом, в рамках администрирования сервера на Linux вы имеете все необходимые инструменты для идентификации и мониторинга запущенных процессов Tomcat. Надеюсь, это ответило на ваш вопрос в полном объёме и окажется полезным в вашей дальнейшей работе.