tomcat 自启动脚本(守护模式)
tomcat以daemon模式启动
跳转到最新脚本
1.jsvc简介
Jsvc 是专为 Java 应用程序开发的一个工具包,其目标是把 Java 应用程序的普通运行转换为可以配置某个普通用户以 Unix 守护进程即daemon模式运行。这样的话,可以很方便地启动 / 停止应用程序,同时也可以支持开机自启,这样每次重启后,不需要手动重启tomcat就可以自动恢复服务。
生产中daemon守护进程的好处有以下三点
- 以daemon方式运行tomcat可使tomcat不受终端影响,不会因为退出终端而停止运行。
- 可以让tomcat以普通用户身份运行。
- 可以让tomcat在系统启动时自动运行。
2.安装jsvc
Tomcat 安装包的 bin 子目录下就包含了 Jsvc 工具包的源码。
1、将tomcat和jdk安装包上传到服务器。
上传apache-tomcat-9.0.46.tar.gz和jdk-8u181-linux-x64.tar.gz到/tomcat目录下
2、解压缩tomcat和jdk的tar包
假设jdk8的安装目录是 /tomcat/java_home/,Tomcat的安装目录是/tomcat/catalina_home/
tar zxvf /tomcat/apache-tomcat-9.0.46.tar.gz –C /tomcat/catalina_home/
tar zxvf /tomcat/jdk-8u181-linux-x64.tar.gz –C /tomcat/java_home/
3、解压jsvc安装包commons-daemon-native.tar.gz
cd /tomcat/apache-tomcat-9.0.46/bin
tar xzvf commons-daemon-native.tar.gz
4、编译安装jsvc,如果没有配置java环境需要使用参数--with-java指出jdk安装位置
cd commons-daemon-1.1.0-native-src/unix/
./configure --with-java=/tomcat/catalina_home/jdk1.8.0_181
make
5、将解压的jsvc复制到tomcat的bin/目录下
cp jsvc ../../
3.使用deamon.sh模式
Tomcat的bin/目录下有个deamon.sh脚本,可以调用deamon.sh start和deamon stop启动/关闭tomcat的守护模式
Tomcat8 守护模式开机自启动。
1. cd /etc/init.d
2. vi tomcat8 粘帖一下文本
#!/bin/bash # description: tomcat deamon script for start/stop/restart the mobile.service# chkconfig: service mobile.service {start/stop/restart}# port: 8180# auther by wxp
. /etc/rc.d/init.d/functions
prog=mobile.serviceexport JAVA_HOME=/tomcat/java_home/jdk1.8.0_181export CATALINA_HOME=/tomcat/catalina_home/apache-tomcat-9.0.46export CATALINA_BASE=/tomcat/mobile_8180/apache-tomcat-9.0.46export CATALINA_PID=/tomcat/mobile_8180/apache-tomcat-9.0.46/conf/mobile_8180.pidexport CATALINA_USER=mobileexport CATALINA_SERVICE_START_WAIT_TIME=10
cd $CATALINA_HOME/bin
case "$1" in
start)echo "Starting Tomcat..." ./daemon.sh \--java-home $JAVA_HOME \--catalina-home $CATALINA_HOME \--catalina-base $CATALINA_BASE \--catalina-pid $CATALINA_PID \--tomcat-user $CATALINA_USER \--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME \start;;
stop)echo "Stopping Tomcat..." ./daemon.sh \--java-home $JAVA_HOME \--catalina-home $CATALINA_HOME \--catalina-base $CATALINA_BASE \--catalina-pid $CATALINA_PID \--tomcat-user $CATALINA_USER \--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME \stop;;
restart)echo "restarting Tomcat..." ./daemon.sh \--java-home $JAVA_HOME \--catalina-home $CATALINA_HOME \--catalina-base $CATALINA_BASE \--catalina-pid $CATALINA_PID \--tomcat-user $CATALINA_USER \--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME \stopsleep 3./daemon.sh \--java-home $JAVA_HOME \--catalina-home $CATALINA_HOME \--catalina-base $CATALINA_BASE \--catalina-pid $CATALINA_PID \--tomcat-user $CATALINA_USER \--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME \start;;
*) echo "Usage: $prog {start|stop|restart}" ;;esacexit 0
3. 保存退出、chmod 755 tomcat8 赋权限
4. 启动 service tomcat8 start
5. chkconfig tomcat8 on,chkconfig --list tomcat 查看启动状态
tomcat deamon模式启停脚本(升级)
tomcatServer.sh
# !/bin/bash
# description: tomcat daemon script
# chkconfig: 2345 10 90
# auther by wangxp #java和tomcat家目录设置
export JAVA_HOME=/u01/java_home/jdk1.8.0_181/
export CATALINA_HOME=/u01/catalina_home/apache-tomcat-9.0.46
#应用相关设置
export CATALINA_BASE_DIR=/u01/template_tomcat
export CATALINA_BASE=$CATALINA_BASE_DIR/apache-tomcat-9.0.46
#启动用户
export CATALINA_USER=root
#程序名称
export PROG=tomcat
#服务启动等待时间
export CATALINA_SERVICE_START_WAIT_TIME=10
#进程pid号
export CATALINA_PID=$CATALINA_BASE/conf/$PROG.pid CURRENT_DATE=$(date +%Y%m%d)
CURRENT_TIME=$(date +%Y%m%d%H%M%S) . /etc/rc.d/init.d/functions
tomcatfun(){
./daemon.sh \
--java-home $JAVA_HOME \
--catalina-home $CATALINA_HOME \
--catalina-base $CATALINA_BASE \
--catalina-pid $CATALINA_PID \
--tomcat-user $CATALINA_USER \
--service-start-wait-time $CATALINA_SERVICE_START_WAIT_TIME $1
} if [ `whoami` != $CATALINA_USER ];then
echo -e "you must use \033[31m$CATALINA_USER\033[0m to excute"
exit
fi if test ! -d $JAVA_HOME;then
echo -e "\033[31mError\033[0m: JAVA_HOME is not available"
exit
fi
if test ! -d $CATALINA_HOME;then
echo -e "\033[31mError\033[0m: CATALINA_HOME is not available"
exit
fi
if test ! -d $CATALINA_BASE;then
echo -e "\033[31mError\033[0m: CATALINA_BASE is not available"
exit
fi cd $CATALINA_HOME/bin
case "$1" in
start)
echo "Starting Tomcat..."
tomcatfun start
if [ -f $CATALINA_PID ]; then
echo -e "$PROG is \033[32mActive\033[0m"
echo "pid=`cat $CATALINA_PID` `cat $CATALINA_BASE/conf/server.xml|grep 'protocol="HTTP/1.1"'|awk 'NR==1''{print $2}'`"
else
echo -e "$PROG started failed"
fi
;;
stop)
echo "Stopping Tomcat..."
tomcatfun stop
if [ -f $CATALINA_PID ]; then
echo "$PROG stopped failed"
else
echo -e "$PROG is \033[31mDead\033[0m"
fi
;;
restart)
echo "restarting Tomcat..."
tomcatfun stop
sleep 1
tomcatfun start
if [ -f $CATALINA_PID ]; then
echo -e "$PROG is \033[32mActive\033[0m"
echo "pid=`cat $CATALINA_PID` `cat $CATALINA_BASE/conf/server.xml|grep 'protocol="HTTP/1.1"'|awk 'NR==1''{print $2}'`"
else
echo -e "$PROG is \033[31mDead\033[0m"
fi
;;
status)
if [ -f $CATALINA_PID ]; then
echo -e "$PROG is \033[32mActive\033[0m"
echo "pid=`cat $CATALINA_PID` `cat $CATALINA_BASE/conf/server.xml|grep 'protocol="HTTP/1.1"'|awk 'NR==1''{print $2}'`"
else
echo -e "$PROG is \033[31mDead\033[0m"
fi
;;
upgrade)
#检查最新打包文件是否已经上传
if test ! -f ${CATALINA_BASE_DIR}/${PROG}.war ;then
echo "${PROG}.war is not exist"
exit
fi
#判断备份文件是否存在,不存在创建备份文件夹,然后停止项目
if test ! -d ${CATALINA_BASE_DIR}/backup/project/${CURRENT_DATE};then
mkdir -p ${CATALINA_BASE_DIR}/backup/project/${CURRENT_DATE}
fi
if test ! -d ${CATALINA_BASE_DIR}/backup/logs/${CURRENT_DATE};then
mkdir -p ${CATALINA_BASE_DIR}/backup/logs/${CURRENT_DATE}
fi
#停止项目
echo "Stopping Tomcat..."
tomcatfun stop
sleep 1
if [ -f $CATALINA_PID ]; then
echo "$PROG stopped failed"
exit 1
else
echo -e "$PROG is \033[31mDead\033[0m"
fi
#拷贝日志和项目到备份文件夹
mv $CATALINA_BASE/logs/catalina-daemon.out ${CATALINA_BASE_DIR}/backup/logs/${CURRENT_DATE}/catalina-daemon.out-${CURRENT_TIME}
if [ $? -eq 0 ];then
echo "log backup complate. file:${CATALINA_BASE_DIR}/backup/logs/${CURRENT_DATE}/catalina-daemon.out-${CURRENT_TIME}"
else
echo "log backup failed!"
exit
fi
mv $CATALINA_BASE/webapps/${PROG} ${CATALINA_BASE_DIR}/backup/project/${CURRENT_DATE}/${PROG}-${CURRENT_TIME}
if [ $? -eq 0 ];then
echo "projet backup complate. file:${CATALINA_BASE_DIR}/backup/project/${CURRENT_DATE}/${PROG}-${CURRENT_TIME}"
else
echo "project back failed!"
exit
fi
#移动项目
rm -rf ${CATALINA_BASE}/webapps/${PROG}.war
mv ${CATALINA_BASE_DIR}/${PROG}.war ${CATALINA_BASE}/webapps
if [ $? -ne 0 ];then
echo "'mv' ${PROG}.war failed!"
exit
fi
#启动项目
echo "Starting Tomcat..."
tomcatfun start
if [ -f $CATALINA_PID ]; then
echo -e "$PROG is \033[32mActive\033[0m"
echo "pid=`cat $CATALINA_PID` `cat $CATALINA_BASE/conf/server.xml|grep 'protocol="HTTP/1.1"'|awk 'NR==1''{print $2}'`"
else
echo -e "$PROG started failed"
fi
;;
log)
if test -f ${CATALINA_BASE}/logs/catalina-daemon.out
then
tail -500f ${CATALINA_BASE}/logs/catalina-daemon.out
else
echo "${CATALINA_BASE}/logs/catalina-daemon.out is not found"
fi
;;
*)
echo "Usage: $PROG {start|stop|restart|status|upgrade|log}"
;;
esac
exit 0
tomcat 自启动脚本(守护模式)的更多相关文章
- tomcat自启动脚本
1.#cd /etc/rc.d/init.d2.#vi tomcat3.把下面的代码保存为tomcat文件,并让它成为可执行文件 chmod 755 tomcat. #!/bin/sh # # /et ...
- 任务:写一个tomcat自启动脚本
写一篇<gitlab无法启动了应该怎么办>
- 红帽linux系统开机自启动脚本。
其实很多东西在最后完成以后会觉得也就那样,有意思的是探究的过程. 前段时间老板要求把一个程序做成linux系统开机自启动脚本的模式. 首先你需要写一个脚本. 我这边建立了一个.sh的脚本,就是用脚本启 ...
- Tomcat重启脚本restart.sh停止脚本stop.sh
Tomcat重启脚本restart.sh停止脚本stop.sh Tomcat本身提供了 startup.sh(启动)shutdown.sh(关闭)脚本,我们在部署中经常会出现死进程形象,无法杀掉进程需 ...
- linux添加开机自启动脚本示例详解
linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的; 一.在/etc/rc.local中添加如果不想将脚本粘来粘去,或创建链接什么的,则:step1. 先修改好脚本,使其所有 ...
- Centos开机自启动脚本的制作
原文地址:http://www.2cto.com/os/201306/220559.html 我的一个Centos开机自启动脚本的制作 一.切换到/etc/init.d/ 二.制作sh脚本 v ...
- 转载:ubuntu 下添加简单的开机自启动脚本
转自:https://www.cnblogs.com/downey-blog/p/10473939.html linux下添加简单的开机自启动脚本 在linux的使用过程中,我们经常会碰到需要将某个自 ...
- Linux开机自启动脚本的总结
一.在/etc/rc.local中添加 如果不想将脚本粘来粘去,或创建链接什么的, 则: step1. 先修改好脚本,使其所有模块都能在任意目录启动时正常执行; step2. 再在/etc/rc.lo ...
- 腾讯云服务器centos 6.5(jdk+tomcat+vsftp)、腾讯mysql数据库 及 tomcat自启动 配置教程
1.腾讯云数据库配置 1.考虑到安全性问题,,平常不使用root用户登录,新增一个用户名neil,用来管理项目的数据库 a.首先登录root创建db_AA数据库 b.在root用户下,创建neil用户 ...
- Tomcat启动脚本
记录一个比较好的tomcat启动脚本,截取<OneinStack>,修改如下两个参数即可用. 使用之前修改下面2个参数: #Location of JAVA_HOME (bin files ...
随机推荐
- mvn eclipse:eclipse -Dwtpversion=2.0 -DdownloadSources=true -DdownloadJavadocs=true -DjdkLevel=1.6
mvn eclipse:eclipse -Dwtpversion=2.0 -DdownloadSources=true -DdownloadJavadocs=true -DjdkLevel=1.6
- PySAGES实记
技术背景 PySAGES是一款可以使用GPU加速的增强采样插件,它可以直接对接到OpenMM上进行增强采样分子动力学模拟,这里我们测试一下相关的安装,并尝试跑一个简单的增强采样示例. 安装PySAGE ...
- 2019 ICPC Universidad Nacional de Colombia Programming Contest
A. Amazon 给定\(n\)条直线(存在共线的情况),在每两条垂直的直线的交点处需要建一个交叉点,求交叉点的数量,注意需要去除共线时候的交叉点 题解 因为要除去共线的情况,我们考虑将一条直线以方 ...
- 记一次 .NET某hdp智能柜系统 卡死分析
一:背景 1. 讲故事 停了一个月时间没有更新博客了,主要是这段时间有些许事情导致心神不宁,我这个人也比较浮躁所以无法潜心修炼,事情如下: 被狗咬了 也不知道是不是出门没看黄历,在小区门口店里买烟,被 ...
- VUE3 使用资源路径加载
1.使用场景 有些情况下,我需要使用组件路径动态的方式加载组件. 2.实现方法 import { defineAsyncComponent } from 'vue'; /** * 根据view组件路径 ...
- 基于 .NET 开发的多功能流媒体管理控制平台
前言 今天大姚给大家分享一个基于 .NET 开发且开源(MIT License)的多功能流媒体管理控制平台:AKStream. 项目介绍 AKStream是一个基于.NET开发且开源(MIT Lice ...
- CTF中RSA相关题型总结(持续更新)
e很小时: import gmpy2 from functools import reduce from Crypto.Util.number import long_to_bytes def CRT ...
- AD使用插件生成交互式BOM
AD使用插件生成交互式BOM 效果图镇楼: 下面来说一下怎么搞,过程其实也很简单,就加载一个脚本的事儿. 1.下载AD用交互式BOM插件 首先前往GitHub下载这位大佬开发的插件 地址:https: ...
- js面试题-代码实现
新 API 最新的 url 参数获取的 API? URLSearchParams // 有如下一个url: http://localhost?a=1&b=2 function getUrlPa ...
- sqlalchemy 的 schema 合并模块 alembic 使用
alembic 很好的解决了升级数据库改变表结构的传统难题,官方的推荐用法是当一个工具用,这是从 Stack Overflow 扒到的直接用内部 api 的代码,操作有点像 diff_patch. 来 ...