一、在实际生产环境中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的更多相关文章

  1. Liu Junqiao:生产环境中shell脚本实例

    在生产环境中,我们时常要注意主机的各种硬件状态,如果是规模较大的服务集群zabbix等健康工具当然好用,如果只是一些小规模的服务主机,shell就会表现的更灵活,也更适用,今天就和大家分享一个系统巡检 ...

  2. 生产环境中tomcat的配置

    生产环境中要以daemon方式运行tomcat 通常在开发环境中,我们使用$CATALINA_HOME/bin/startup.sh来启动tomcat, 使用$CATALINA_HOME/bin/sh ...

  3. 在生产环境中安全执行更新删除SQL脚本的技巧

    今天在生产环境上解决问题,由于广发银行的管理制度是开发公司是不允许确生产环境的,所以我们只能把要更新的语句发给运营中心,由运营中心的投产人员执行,我们则在旁边看着:在他执行的时候发现了一个很有趣的技巧 ...

  4. [virtualenv]生产环境中使用virtualenv

    virtualenv 对于python开发和部署都是好工具,可以隔离多个python版本和第三方库的版本,这里作者总结了几个常用python服务怎么样结合virtual部署 原文链接 Python 中 ...

  5. React 与 Redux 在生产环境中的实践总结

    React 与 Redux 在生产环境中的实践总结 前段时间使用 React 与 Redux 重构了我们360netlab 的 开放数据平台.现将其中一些技术实践经验总结如下: Universal 渲 ...

  6. .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点

    2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...

  7. 理解Docker(6):若干企业生产环境中的容器网络方案

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  8. .NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点

    今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...

  9. 【原】Storm Local模式和生产环境中Topology运行配置

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

随机推荐

  1. ruby require

    require一般用来加载其它的类,如:  #Ruby代码  : require 'dbi'   require "rexml/document" 但是上面加载的是标准类库里面的文 ...

  2. CUE 文件格式说明

    CUE 文件,即 CUESheets ,光盘镜像辅助文件.通常用于光盘刻录.音乐播放等等. 比如用 EAC 刻录CD光盘,或者用 Foobar2000 播放整轨音乐文件. CUE 文件是非常好的音乐专 ...

  3. 自制简单的range(Vue)

    废话不多说先上成果图 实现思路 主要分界面与逻辑两大块 界面分为5个部分 左滑块长度 左内容位置 中间长度 右滑块长度 右内容位置 逻辑 touch3个事件 各滑块长度及位置计算 选中时变色 具体实现 ...

  4. IE9不能直接引用Console

    问题: 公司有个项目,功能很简单,读取业务数据,展示在页面上. 一个很简单的问题,却因为目标浏览器是IE9,卡了三天. 前端给的反馈是: 在IE9下,程序一会儿对,一会儿不对--第一次刷不出来,多刷几 ...

  5. futimens函数的使用【学习笔记】

    #include "apue.h" #include <fcntl.h> int main(int argc,char *argv[]) { int i,fd; str ...

  6. HDU1358 Period —— KMP 最小循环节

    题目链接:https://vjudge.net/problem/HDU-1358 Period Time Limit: 2000/1000 MS (Java/Others)    Memory Lim ...

  7. 计算机学院大学生程序设计竞赛(2015’12)Pick Game

    Pick Game Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  8. maven实战(7)-- 设置maven编译器级别

    两种方式: (一)全局设置 首先我们要在settings.xml文件中找到<profiles>标签,然后在此标签内部粘贴如下配置: <profile> <id>jd ...

  9. 西交校赛 F. GZP and Poker

    F. GZP and Poker GZP often plays games with his friends.Today they went to a board game.There are n ...

  10. IOS中延时执行方式

    本文列举了四种延时执行某函数的方法及其一些区别.假如延时1秒时间执行下面的方法. - (void)delayMethod { NSLog(@"execute"); } 1.perf ...