linux脚本启三个tomcat,linux 重写Tomcat启停脚本

#!/bin/bash

#

# description: Tomcat start/stop/status script

#Location of JAVA_HOME

export JAVA_HOME=/opt/extp/tpc/jdk1.7 # 根据情况更改自己的jdk地址

#Add Java binary files to PATH

export PATH=$JAVA_HOME/bin:$PATH

#CATALINA_HOME is the location of the configuration files of this instance of Tomcat

CATALINA_HOME=/opt/extp/tpc/tomcat8 # 根据情况更改自己的tomcat地址

#TOMCAT_USER is the default user of tomcat

TOMCAT_USER=admin# 修改tomcat启停用户

#TOMCAT_USAGE is the message if this script is called without any options

TOMCAT_USAGE="Usage: $0 {\e[00;32mstart\e[00m|\e[00;31mstop\e[00m|\e[00;32mstatus\e[00m|\e[00;31mrestart\e[00m}"

#SHUTDOWN_WAIT is wait time in seconds for java proccess to stop

SHUTDOWN_WAIT=10 # 10秒后判断tomcat是否停止

tomcat_pid() {

echo $(ps -ef | grep $CATALINA_HOME | grep -v grep | awk '{print $2}')

}

start() {

pid=$(tomcat_pid)

if [ -n "$pid" ];then

echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m"

else

echo -e "\e[00;32mStarting tomcat\e[00m"

if [ `user_exists $TOMCAT_USER` = "1" ];then

su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh

else

$CATALINA_HOME/bin/startup.sh

fi

status

fi

return 0

}

status(){

pid=$(tomcat_pid)

if [ -n "$pid" ];then

echo -e "\e[00;32mTomcat is running with pid: $pid\e[00m"

else

echo -e "\e[00;31mTomcat is not running\e[00m"

fi

}

stop() {

pid=$(tomcat_pid)

if [ -n "$pid" ];then

echo -e "\e[00;31mStoping Tomcat\e[00m"

$CATALINA_HOME/bin/shutdown.sh

let kwait=$SHUTDOWN_WAIT

count=0;

until [ `ps -p $pid | grep -c $pid` = '0' ] || [ $count -gt $kwait ]

do

echo -n -e "\e[00;31mwaiting for processes to exit\e[00m\n";

sleep 1

let count=$count+1;

done

if [ $count -gt $kwait ];then

echo -n -e "\n\e[00;31mkilling processes which didn't stop after $SHUTDOWN_WAIT seconds\e[00m"

kill -9 $pid

fi

else

echo -e "\e[00;31mTomcat is not running\e[00m"

fi

return 0

}

user_exists(){

if id -u $1 >/dev/null 2>&1; then

echo "1"

else

echo "0"

fi

}

case $1 in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

status)

status

;;

*)

echo -e $TOMCAT_USAGE

;;

esac

exit 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub 2017 年度报告,最受欢迎的编程语言是?

GitHub 每年都会在年度盛会中推出数据报告,其中列出了一些年度的数据,包括其网站中最受欢迎的编程语言、开源项目等。今年的数据更是让人眼前一亮,Python 这匹编程语言中的黑马,势不可挡! 编程语言之间的战争就是一场持…

python except用法和作用_121个问题答对80%那么恭喜你,Python的高薪工作迟早有你一份...

1. Python和Java、PHP、C、C#、C等其他语言的对比?2. 简述解释型和编译型编程语言?3. 代码中要修改不可变数据会出现什么问题? 抛出什么异4. print 调用 Python 中底层的什么方法?5. 简述你对 input()函数的理解?6. Python解释器种类以及特点&#xf…

相对论基础的谬误

《广义时空论•像说》附录之五      相对论是相对正确的,因为这个世界能最快描绘一个物体表征的手段是光,即光是标尺。  当物体速度小于光速时,通过对物体发出来的光的探测,可以得出物体的速度表征,及物体的一…

word2vec原理_word2vec论文阅读笔记

word2vec算是NLP中的经典算法,之前在课程中简单的学过,但面试时经不起深问。痛定思痛,参考Jack(没搜出来)的总结,笔者重点阅读了Mikolov的原始论文[1]和Xin Rong的详细推导[2]。Jack:word2vec 相…

GraphQL:来来来,Union

Union就是把不相干的一些数据实体,合并起来,一起供外部查询。不用像webapi,完成查询不同的数据,需要多次请求。一次请求,获取多样数据,减少请求次数,这也是GraphQL的优势之一。怎么弄&#xff0…

每个程序员都应该知道的基础数论

这篇文章讨论了数论中每个程序员都应该知道的几个重要概念。本文的内容既不是对数论的入门介绍,也不是针对数论中任何特定算法的讨论,而只是想要做为数论的一篇参考。如果读者想要获取关于数论的更多细节,文中也提供了一些外部的参考文献&…

powerbi视觉对象_玩转Power BI的图片可视化

​制作可视化报告时,为了展示效果,有时候需要用图片来展示,在 Power BI 中,关于图片的自定义视觉对象主要有下面三个,利用他们可以很轻松的进行图片可视化。下面来看看这些视觉对象的效果。样本数据如下:为…

.gpg 进程 linux,小知识之Linux系统中的最大进程数,最大文件描述,最大线程数...

今天来了解一下linux里面的一些小知识:(一)Linux系统中最大可以起多少个进程?(1)32位系统中最多可以起32768个进程(2)64位系统中最多可以起2的22次方(4194304)约420万个如何查看linux系统默认的最大进程数,这里以centos7(x64)作为例子:[roote…

东南大学计算机网络_东南大学,2020年东南大学高考录取分数线分析

各位读者大家好,今天给大家介绍的是南京重点大学—东南大学。小编一直从事高等教育领域的写作,感兴趣的读者可以关注一下小编~1.学校基础东南大学,简称“东大”,是中华人民共和国教育部直属、中央直管副部级建制的全国重点大学&am…

Goodbye 2020,Welcome 2021 | 沉淀 2021

引言2021年,已开启二月的篇章,农历新年也张灯结彩而来,只不过要留守过年。在这辞旧迎新之际,踏入而立之年之时,正是算账的好时候,数一数今年的成长,讲一讲来年的期望,最重要的还是要…

试着翻译24小时自学SQL第四版

最近发现自己在SQL方面的功课学的很不到家,就饿补下了,就上网找了这本 Sams Teach Yourself SQL in 24Hours 这本书,感觉还是不错的而且都到第四版了,翻译了下目录感觉还是很值得学习的,悔不该在大三的时候没有好好的学好数据库啊,现在出来工作了感觉这方面是所有程序的基础,作…

python变量的作用_python 变量的作用范围

python 的变量作用域分三种 1: local 指当前作用域 通过locals() 能获取该命名空间的对象的dict 2:global 对应某个 .py 模块的作用域 通过globals() 能获取该命名空间的对象的dict 3:builtin 最顶层的作用域。 每次执行一个函数时, 就会创建新的局部命名空间。 解…

程序员必须知道的十大基础实用算法及其讲解

本文盘点程序员必须知道的十大基础实用算法及其讲解。 算法一:快速排序算法 快速排序是由东尼霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(nlogn) 次比较。在最坏状况下则需要Ο(n2) 次比较,但这种状况并不常见。事实上&#…

sql 日期和当前日期时间差_详解PostgreSQL 如何获取当前日期时间

概述开发数据库应用或者调试代码时,经常需要获取系统的当前日期和时间,今天主要看一下 PostgreSQL 中提供的相关函数。一、当前日期CURRENT_DATECURRENT_DATE 函数用于获取数据库服务器的当前日期:postgres# SELECT CURRENT_DATE;调用该函数时…

聊聊如何构建自驱团队(3)

聊聊如何构建自驱团队(3)“道“和”术“对于技术出生的管理者在进行问题思考时,总会深陷“术”和“道”两层维度问题的困扰:“道”就是平时大家提到的理论实践,而“术”则是与实际相匹配的一些方法。敏捷项目管理为构建…

linux c 数据库访问框架,linux c 开发通用结构,框架

了解其它语言的框架例:java Struts1、Struts2、Hibernate、Mybatis、Ibatis、Spring 等等,利用这些框架能够快速的开发出稳定的应用程序,在java中这些框架的功能主要提供一些浓缩版的功能。仔细思索:其它语言的通用结构?例&#x…

python list常用方法_Python中列表(List)的基本用法

一、列表的创建 list((3, 5, 7, 9, 11)) list(range(1, 10, 2)) """ 字符串、集合、字典的键、字典的键:值对转列表 """ list(hello, world) list({3, 7, 8}) list({a:3, b:9, c:78}) list({a:3, b:9, c:78}.items()) ""&q…

我们只知大势将至,却不知未来已来

❈ 凯文•凯利 《必然》: 未来的一切事物的生命都将是无穷尽的升级,而且迭代的速度不断的在加速。包括看得见的事物,也包括看不见的审美观和价值观。无论你使用一项工具的时间有多长,不断的升级都会把你变成一个菜鸟,从…

c#爬虫-1688官网自动登录

背景在1688官网里面有很多信息是需要登录才能看得到的,比如商家的联系电话等等。那么我们在抓取它的网页的时候,肯定是需要维持登录状态才能得到对应的内容。这里面就会涉及到自动登录的问题。登录地址https://login.1688.com/member/signin.htm自动登录…

tensorrt轻松部署高性能dnn推理_部署环境之:tensorRT的插件

TensorRT是一个高性能的深度学习推理(Inference)优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT可用于对超大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。TensorRT现已能支持TensorFlow、Caffe、Mxnet、Pytor…