今天早上遇到一个问题,在这里记录一下,使用shell进行启动tomcat的时候,在shell中存在了这么一段
$TOMCAT_PATH/bin/startup.sh
tail -f $TOMCAT_PATH/logs/catalina.out
这一段脚本所执行的作用是:启动tomcat,然后打印日志
这个时候这个脚本对linux系统来说是一个进程,它有一个进程组pgid ,然后启动的tomcat的pid是属于这个pgid的,所以要在执行之后简单的做法是ctrl+c 让tomcat的pgid是它自己的pid。
SIGINT与ctrl+c是关联的
感谢这个大大,灰常详细
###########################################
#!/bin/bash
#Shell command for deploy tomcat
#临时文件路径
TEMP_PATH=/home/temp
TEMP_COM_PATH=$TEMP_PATH/com
TEMP_MAPPING_PATH=$TEMP_PATH/mappings
#进程标志名
FLAG_NAME=tomcat
#tomcat的路径
TOMCAT_PATH=/home/tomcat
WEBAPP_PATH=$TOMCAT_PATH/webapps
CACHE_PATH=$TOMCAT_PATH/work/Catalina
CLASSES_PATH=$WEBAPP_PATH/toubao/WEB-INF/classes
echo "CLASSES_PATH : $CLASSES_PATH"
#检查是否有30分钟内上传的文件夹
EFILES=`find $TEMP_PATH -mmin -30|grep zip`
if [ x"$EFILES" = x"" ];
then
echo "ERROR:There is no zip file for less than 30 minutes!!!"
exit 1
fi
#删除原来解压的文件
for file in `find $TEMP_PATH -type d`
do
if test -d $file;
then
if [ $TEMP_PATH != $file ];
then
rm -rf $file
fi
fi
done
#把30分钟之内上传的文件夹解压
for file in `find $TEMP_PATH -mmin -30|grep zip`
do
echo "unzip -oq $file"
unzip -oq $file -d $TEMP_PATH
done
#判断是否有这两个文件夹目录,没有的话不做操作
if [[ -d $TEMP_COM_PATH ]] || [[ -d $TEMP_MAPPING_PATH ]];
then
TOMCAT_JK_PID=`ps -ef|grep $FLAG_NAME|head -n 1|awk '{print $2}'`
kill -9 $TOMCAT_JK_PID
if [[ $? == 0 ]];
then
echo "the process does not exist"
#exit 2
fi
echo "kill $FLAG_NAME process : $TOMCAT_JK_PID"
rm -rf $CACHE_PATH
echo "delete the caches: rm -rf $CACHEPATH"
fi
FLAG=0
# 假如com文件夹存在
if [ -d $TEMP_COM_PATH ];
then
echo "**$TEMP_COM_PATH** The directory exists!!!"
echo "$CLASSES_PATH/com"
rm -rf $CLASSES_PATH/com
cp -rf $TEMP_COM_PATH $CLASSES_PATH
FLAG=1
fi
# 假如mappings文件夹存在
if [ -d $TEMP_MAPPING_PATH ];
then
echo "**$TEMP_MAPPING_PATH** The directory exists!!!"
echo "$CLASSES_PATH/mappings"
rm -rf $CLASSES_PATH/mappings
cp -rf $TEMP_MAPPING_PATH $CLASSES_PATH
FLAG=1
fi
if [[ $FLAG == 1 ]];
then
$TOMCAT_PATH/bin/startup.sh
tail -f $TOMCAT_PATH/logs/catalina.out
fi
if [[ $FLAG == 0 ]];
then
echo "do nothing"
fi
#tomcat-JK
#ARR_FILES=$(ls /home -l | awk '/^d/{print $NF}')
#echo $ARR_FILES