linux系统启动时候同时启动tomcat(多个)

2024-05-12 15:08

本文主要是介绍linux系统启动时候同时启动tomcat(多个),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于公司项目需要,将一个大项目分成N多个子系统,而这些又全部部署在同一个目录下不同的tomcat里,每次一断电,测试服务器上的服务就要一个一个启动,就想着能不能写个shell脚本一次搞定,研究一上午,弄了个大概,还有许多地方需要优化,稍候会说,先记录一下,省的以后找起来麻烦。
思路很简单:
1、系统启动的时候顺便启动一个服务,这个服务用来调用shell脚本
2、编写一个shell脚本,遍历目录下所有的tomcat,找到startup.sh并执行
话不多说,来看代码。
①在/etc/init.d下新建一个文件tomcat-auto-start-service

vi /etc/init.d/tomcat-auto-start-service

内容如下:

#!/bin/sh  
# chkconfig: 345 99 10  
# description: Auto-starts tomcat  
# /etc/init.d/tomcatd  
# Tomcat auto-start  
# Source function library.  
#. /etc/init.d/functions  
# source networking configuration.  
#. /etc/sysconfig/network
ETVAL=0
start()
{
./startTomcat.sh
}  
case "$1" in  start)   start  ;;  
esac  
exit $RETVAL 

该脚本大概意思是该服务有一个start方法,下面会有用到,而start方法只做一件事就是调用下面的shell脚本。

另外在根目录下新建一个startTomcat.sh,内容如下

#!/bin/bash  
function ergodic(){  for file in ` ls $1 `  do if [ "$file"x = "startup.sh"x ]; then.$1"/"$filesleep 5echo $1"/"$fileelif  [ -d $1"/"$file ]  then  ergodic $1"/"$file fi  done  
}  
INIT_PATH="/usr/local/tomcat"  
ergodic $INIT_PATH  

该脚本的大概意思:传入初始化路径,遍历该目录,如果遇到文件名为startup.sh,则执行,否则递归调用,并传入当前目录
(语法我也是一瓶子不满半瓶子咣当的,请大神来吐槽)

:wq

②给该文件授权,反正是公司内部测试服务器,为了方便,授权777

chmod -R 777 tomcat-auto-start-service

③挂载,具体rcX.d是干嘛的,有兴趣的童鞋可以研究一下,需要说明的是最后的命名,以S或者以K开头是有原因的,根据不同需要可能是S开头,也可能是K开头,之后的数字代表他们的启动顺序

ln -s /etc/init.d/tomcat-auto-start-service /etc/rc2.d/S16TomcatAutoStart

④设置自动启动,其实也就是加入到启动服务中

chkconfig --add tomcat-auto-start-service

⑤重启,验证

reboot

注:此后也可以用service tomcat-auto-start-service start 来启动所有的tomcat服务

需要进一步优化:
一、如果tomcat/bin/startup.sh没有权限,不能自动授权
二、只有start服务没有stop和restart(由于暂时只有这一个需求,先写这一个功能,程序猿最好不要过度设计)
三、这种遍历目录查找startup.sh的方法貌似不太好,然而暂时未想到其他方法,希望看到的大神给指点一二

以此为记,继续努力。

参考文献:
http://blog.csdn.net/wangli61289/article/details/37924785
http://hw1287789687.iteye.com/blog/1766217

这篇关于linux系统启动时候同时启动tomcat(多个)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/982966

相关文章

Nginx启动失败:端口80被占用问题的解决方案

《Nginx启动失败:端口80被占用问题的解决方案》在Linux服务器上部署Nginx时,可能会遇到Nginx启动失败的情况,尤其是错误提示bind()to0.0.0.0:80failed,这种问题通... 目录引言问题描述问题分析解决方案1. 检查占用端口 80 的进程使用 netstat 命令使用 ss

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx