生产环境中使用脚本实现tomcat start|status|stop|restart
一、在实际生产环境中tomcat启动是在bin目录下采用自带脚本startup.sh启动;使用shutdown.sh关闭。如下图:

再如果对于新手来讲在不知道路径情况下重启是一件头痛的事情(注意没有reload,所以重启只能shutdown.sh在startup.sh);而且这里还有一个坑等着:
什么坑呢? 如图:

tomcat服务是启动成功了的。那么我想停止服务用shutdown.sh,会出现什么呢?

进程还在而且成为了僵尸进程,万恶啊?居然关不了,终极方法kill -9 进程号。试试?

终于干掉了。
再次启动:

OK已经成功;还有一个坑在?请看,服务已经启动,如果我再次执行startup.sh会出现什么呢?

请看红色,启动命令能正常执行,而且还能启动一个服务意思是有双服务双进程。万恶啊……
好问题来了我们如何简单命令的启动tomcat服务呢?如何让服务启动了再次执行启动就不会执行了呢?ok。shell脚本实现:
二、脚本实现
#!/bin/bash
#############################################
# this script is created by xuxuedong. #
# e_mail:@qq.com #
# qqinfo: #
# This is server start to chkconfig. #
# version:1.1 #
#############################################
# chkconfig:
# description: Saves and restores system entropy pool for \
# higher quality random number generatio . /etc/init.d/functions
#set env
export PATH=$PATH:/bin:/sbin:/usr/sbin
export LANG="zh_CN.GB18030" # Require root to run this script.
if [[ "$(whoami)" != "root" ]]; then
echo "Please run this script as root." >&
exit
fi # Source function library.
#. /etc/init.d/functions
if [ ! -f /opt/software/apache-tomcat-7.0./bin/startup.sh ]
then
echo "tomcat is not exit.please install."
exit
fi
#This is a function for start tomcat
function start(){
if [ `ps -ef |grep java|grep -v grep|grep -v sh|wc -l` -eq ]
then
/bin/sh /opt/software/apache-tomcat-7.0./bin/startup.sh >/dev/null >&
[ $? -eq ]&&\
sleep
action "tmocat start." /bin/true
else
action "tomcat had been startted." /bin/true
exit
fi
}
#This is a function for stop tomcat
function stop(){
if [ `ps -ef |grep java|grep -v grep|grep -v sh|wc -l` -gt ]
then
PID=`ps -ef |grep java|grep -v grep|awk '{print $2}'`
kill - $PID
[ $? -eq ]&&\
echo "tomcat is stopping..."
sleep
action "tomcat been stoped." /bin/true
else
action "tomcat had been stoped." /bin/true
exit
fi
}
#This is a function for restart tomcat
function restart(){
if [ `ps -ef |grep java |grep -v grep|grep -v sh|wc -l` -gt ]
then
PID1=`ps -ef |grep java|grep -v grep|awk '{print $2}'`
kill - $PID1
[ $? -eq ]&&/bin/sh /opt/software/apache-tomcat-7.0./bin/startup.sh >/dev/null >& [ $? -eq ]&&echo "tomcat is restarting..."
sleep
action "tomcat is restartted ." /bin/true
else
action "tomcat is not running,please start." /bin/true
exit
fi
}
#This is a function for status tomcat
function status(){
if [ `ps -ef |grep java |grep -v grep|wc -l` -gt ]
then
action "tomcat is running." /bin/true
else
action "tomcat is stopped." /bin/false
exit
fi
}
case $ in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;; *)
echo "USAG:start|stop|restart|status"
esa
vim tomcatd.sh
放心这脚本是我工作中自己写的启动脚本,已经测试过。如有疑问请看脚本执行情况:
请看:
1、首先来看下服务是否启动

脚本实现了查看服务是否启动;
2、再次执行脚本看看能否启动多个服务

注意红色部分已经提示服务已经启动不需要在执行命令了,而且查看进程只有一个刚启动服务。
3.停止服务还有僵尸进程吗?:

停止后服务没有了?
4.那我们在服务没有起来的情况下,我们想重启服务呢?

没有启动服务情况下执行restart会提示,而且服务也不会启动。
5、启动服务:

服务又起来了。
6、如果是别人不知道这个服务后面要给参数或者输错了参数start|stop|restart|status才能启动那么会出现什么效果呢?

OK到现在所有的功能已经实现而且跟系统的 启动方法类似了。只是系统实现的是、service XXXX start|stop|restart|status或者是etc/init.d/xxx start|stop|restart|status
如何才能实现和系统一模一样的功能呢?
三、使用service tomcatd start启停或者是/etc/init.d/tomcatd start
1、将脚本文件拷贝至/etc/init.d/
cp tomcatd.sh /etc/init.d/tomcatd
chmod +x /etc/init.d/tomcatd 加可执行权限。
默认已经可执行service tomcatd start|stop|restart|status
2、将tomcatd加入chkconfig开机自启动。
# chkconfig: 2345 92 92 请注意以上脚本文件中有这一行表示2345启动号码是92
从哪儿来的?
使用ls -l /etc/rc3.d 可查看

注意:最好从中选去没有的号码如:

已经有27了那么不能使用27。

93 94 92 (原本没有之后加入了tomcatd)表示没有用可用
所以使用92
3、使用chkconfig --add tomcatd 加入

不报错表示成功;
4、检查一下:chkconfig --list |grep tomcatd

ok 成功!
以上是简单的脚本实现功能,高手绕道,不好勿喷,适合初学以及脚本学习者,原本想在脚本中增加注释,但是自己想偷懒如有疑问可留言。
生产环境中使用脚本实现tomcat start|status|stop|restart的更多相关文章
- Liu Junqiao:生产环境中shell脚本实例
在生产环境中,我们时常要注意主机的各种硬件状态,如果是规模较大的服务集群zabbix等健康工具当然好用,如果只是一些小规模的服务主机,shell就会表现的更灵活,也更适用,今天就和大家分享一个系统巡检 ...
- 生产环境中tomcat的配置
生产环境中要以daemon方式运行tomcat 通常在开发环境中,我们使用$CATALINA_HOME/bin/startup.sh来启动tomcat, 使用$CATALINA_HOME/bin/sh ...
- 在生产环境中安全执行更新删除SQL脚本的技巧
今天在生产环境上解决问题,由于广发银行的管理制度是开发公司是不允许确生产环境的,所以我们只能把要更新的语句发给运营中心,由运营中心的投产人员执行,我们则在旁边看着:在他执行的时候发现了一个很有趣的技巧 ...
- [virtualenv]生产环境中使用virtualenv
virtualenv 对于python开发和部署都是好工具,可以隔离多个python版本和第三方库的版本,这里作者总结了几个常用python服务怎么样结合virtual部署 原文链接 Python 中 ...
- React 与 Redux 在生产环境中的实践总结
React 与 Redux 在生产环境中的实践总结 前段时间使用 React 与 Redux 重构了我们360netlab 的 开放数据平台.现将其中一些技术实践经验总结如下: Universal 渲 ...
- .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点
2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...
- 理解Docker(6):若干企业生产环境中的容器网络方案
本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...
- .NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点
今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...
- 【原】Storm Local模式和生产环境中Topology运行配置
Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...
随机推荐
- Class.forName("java.lang.String")的作用?
返回字节码: 返回的方式有2种: 第一种是这个类的字节码已经加载到内存里面来了,现在想要取到它的字节码,我直接找到那份字节码把他返回: 第二种是我去得到这个类的字节码,结果在虚拟机里面还没有这个类的字 ...
- 在C语言中使用libb64进行Base64编解码
libb64下载地址http://sourceforge.net/projects/libb64 以下为Demo libb64_demo.c #include <stdio.h> #inc ...
- linux初级学习笔记八:linux权限管理及权限管理命令详解!(视频序号:04_2)
本节学习的命令:chown,chgrp,chmod,openssl,umask 本节学习的技能: 文件权限详解及对其的操作 生成随机密码命令 用遮罩码对用户权限进行修改 站在用户登陆的角度来说SHEL ...
- WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中——浏览器里运行其他语言的程序?
Mozilla.谷歌.微软和苹果已经决定开发一种面向Web的二进制格式.该格式名为WebAssembly,可以作为任何编程语言的编译目标,使应用程序可以运行在浏览器或其它代理中. 几年前,我们在Inf ...
- cocos2d-js使用plist执行自身动作
首先需要将精灵动作帧动画图片使用TexturePacker创建plist,创建好后,将生成的plist和png图片(所有帧动画图片集成的一张大图): 百牛信息技术bainiu.ltd整理发布于博客园 ...
- 使用slot分发内容
为了让组件可以组合,我们需要一种方式来混合父组件的内容与子组件的模板.这个过程被称为 内容分发 使用特殊的<slot>元素作为原始内容的插槽 除非子组件模板包含至少一个<slot&g ...
- 【旧文章搬运】Windows句柄表分配算法分析(二)
原文发表于百度空间,2009-03-30========================================================================== 四.句柄表 ...
- (水题)洛谷 - P1036 - 选数
https://www.luogu.org/problemnew/show/P1036 $n$ 才20的数据量,我当时居然还在想怎么分组组合,直接 $2^{20}$ 暴力搞就行了. $x_i $太大了 ...
- C++开发工程师面试题库 1~50道
1. 指出以下变量数据存储位置 全局变量int(*g_pFun)(int);g_pFun=myFunction;g_pFun存储的位置(A ) 为全局的函数指针 指向空间的位置( B) 所有函数 ...
- lightoj1169【DP】
题意(来自大哥): 有两栋楼,左边一栋,右边一栋,层数从1-n,地面的标号为0,每一层有一个水果.有一只猴子在地面上,他现在要上到n层去,在第i层会吃掉水果花费一定时间. 猴子有两种方式从第i层到i+ ...