13277 ? Sl 7:13 /usr/local/java/bin/java -Djava.util.logging.config.fil
e=/usr/local/tomcat/conf/logging.properties [...] -Dcatalina.home=/usr/local/tomca
t [...]
21149 pts/0 S+ 0:00 grep /usr/local/tomcat/
3)由于 grep /usr/local/tomcat/
匹配了模式,导致我们获得了两个条目而不是一个,让我们将其删除。 -v
是 grep 的反向匹配标志,意味着它只会选择不符合模式的行。因此,在前面的示例中,使用 ps -x | grep /usr/local/tomcat/ | grep -v grep
将返回:
13277 ? Sl 7:13 /usr/local/java/bin/java -Djava.util.logging.config.fil
e=/usr/local/tomcat/conf/logging.properties [...] -Dcatalina.home=/usr/local/tomca
t [...]
4) 很好,现在我们有了所需的pid。不过,我们还需要删除所有其他内容。为此,让我们使用cut
命令。这个命令可以从一个文件或标准输出中删除部分内容。-d选项是分隔符,而-f选项是您需要的字段。太棒了。因此,我们可以使用空格 (' ') 作为分隔符,并获取第一个字段,它对应于pid。运行ps x | grep /usr/local/tomcat/ | grep -v grep | cut -d ' ' -f 1
将返回:
13277
这就是你所需要的。要在你的脚本中使用它很简单:
#replace below with your tomcat path
tomcat_path=/users/tomcat/apache-tomcat-8.0.30
pid=$(ps x | grep "${tomcat_path}" | grep -v grep | cut -d ' ' -f 1)
if [ "${pid}" ]; then
eval "kill ${pid}"
fi
awk
而不是cut
,像这样:ps axuw | grep path/to/tomcat | grep -v grep | awk '{print $2}'
- atripes使用wget命令检查服务器地址并检查状态的一种方法。
在此处检查链接:
http://www.velvettools.com/2013/07/shell-script-to-check-tomcat-status-and.html#.VX_jfVz-X1E
TOMCAT_HOME=/usr/local/tomcat-folder/
is_Running ()
{
wget -O - http://yourserver.com/ >& /dev/null
if( test $? -eq 0 ) then
return 0
else
return 1
fi
}
stop_Tomcat ()
{
echo "shutting down......"
$TOMCAT_HOME/bin/shutdown.sh
}
start_Tomcat ()
{
echo "starting......"
$TOMCAT_HOME/bin/startup.sh
}
restart ()
{
stop_Tomcat
sleep 10
kill_Hanged_Processes
start_Tomcat
sleep 60
}
简单的方法是:
ps -ef | grep tomcat
user [id-to-kill] Date [tomcat-path]
sudo kill -9 [id-to-kill]
1000 8309 4960 0 20:51 pts/1 00:00:00 grep --color=auto tomcat
或者,如果您搜索任何不存在的内容(neo44
),它会回复$ ps aux | grep neo44 1000 8397 0.0 0.0 13640 952 pts/1 S+ 20:53 0:00 grep --color=auto neo44
。 - prayagupaps -ef | grep tomcat
命令可以在输出中查找包含 "tomcat" 的任何内容,通常包括 grep tomcat
进程。您可以使用 -v 标志进行过滤,例如 ps -ef | grep tomcat | grep -v grep
,也可以使用 pgrep
或者更具发行版和设置特定的命令,例如 service tomcat status
。 - CodeShaneTomcat的默认端口是8080。您可以使用grep命令并将端口状态与比较循环一起使用。
#!/bin/bash
STAT=`netstat -na | grep 8080 | awk '{print $7}'`
if [ "$STAT" = "LISTEN" ]; then
echo "DEFAULT TOMCAT PORT IS LISTENING, SO ITS OK"
elif [ "$STAT" = "" ]; then
echo "8080 PORT IS NOT IN USE SO TOMCAT IS NOT WORKING"
## only if you defined CATALINA_HOME in JAVA ENV ##
cd $CATALINA_HOME/bin
./startup.sh
fi
RESULT=`netstat -na | grep 8080 | awk '{print $7}' | wc -l`
if [ "$RESULT" = 0 ]; then
echo "TOMCAT PORT STILL NOT LISTENING"
elif [ "$RESULT" != 0 ]; then
echo "TOMCAT PORT IS LISTENINS AND SO TOMCAT WORKING"
fi
您可以通过比较脚本来进行检查。如果使用Tomcat的默认端口,则可以使用grep port 8080命令进行检查,这只会检查Tomcat是否正在运行。 接下来,您可以检查使用该端口的进程 lsof -i:8080 //如果使用的是8080端口
如果要通过终止使用该端口的进程来释放端口,使用以下命令 kill 75782 //例如75782是使用该端口的进程