【发布时间】:2021-03-02 09:13:39
【问题描述】:
有时我的tomcat服务器由于内存问题而自动关闭,所以我想使用下面的脚本来检查tomcat是否正在运行:
checkTomcatRunning.sh
TOMCAT_PID=$(ps -ef | awk '/[t]omcat/{print $2}')
echo TOMCAT PROCESSID $TOMCAT_PID
if [ -z "$TOMCAT_PID" ]
then
echo "TOMCAT NOT RUNNING"
sudo /opt/tomcat/bin/startup.sh
else
echo "TOMCAT RUNNING"
fi
下面是输出日志到/opt/tomcat/logs/checkTomcatRunning.log的crontab
crontab -l
*/1 * * * * /opt/tomcat/webapps/checkTomcatRunning.sh >>/opt/tomcat/logs/checkTomcatRunning.log 2>&1
在 /opt/tomcat/logs/checkTomcatRunning.log 中,我可以看到打印了 4 个 PID
cat /opt/tomcat/logs/checkTomcatRunning.log
TOMCAT PROCESSID 53585 53916 53917 53918
TOMCAT RUNNING
如果运行 ps -ef |来自 linux 命令行的 awk '/[t]omcat/{print $2}',只有 1 个 PID 53585
ps -ef | awk '/[t]omcat/{print $2}'
53585
而且我在运行过程中只能找到53585,找不到53916 53917 53918。
ps -p 53585 53916 53917 53918
PID TTY STAT TIME COMMAND
53585 pts/0 Sl 0:50 /usr/bin/java -Djava.util.logging.config.file=/opt/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pk
谁能帮忙说明为什么 checkTomcatRunning.log 中打印了 4 个(但不是 1 个)PID?
【问题讨论】: