非常实用的Tomcat启动脚本实现方法

前言

有这样一个场景,公司为了安全起见,需要对所有登录Linux服务器做安全限制,要求除了管理员其他要登录linux服务器的员工不能用最高权限账号登录,要创建新的用户,对目录及文件权限做出控制,只能对需要操作的目录允许读,写,执行权限,其他目录只有读的权限,并且所有tomcat不能直接在bin中用startup.sh,shutdown.sh进行启动和停止,要通过写shell脚本进行此操作,也就是说有两个步骤,创建用户并设置权限,写tomcat启动脚本,下面我们就完成这两个步骤。

1.首先我们就来创建一个普通用户。

groupadd tomcat #加组
useradd -g tomcat -s /usr/sbin/nologin tomcat #向组加用户
usermod -L tomcat #锁定密码,使密码无效
passwd tomcat # 设置密码 

通过这四步,我们就把普通用户创建好了,在创建用户时,我们是先创建的组,组创建完成后创建用户并加入该组。

用户创建完成后,就开始给用户设置权限

chown -R tomcat:tomcat /data #分配权限给用户 

这就是给tomcat这个用户设置了可以操作data目录及其子目录下的权限,-R就代表该目录及其级联子目录。

[root@localhost data]# ls -l
total 0
drwxr-xr-x. 4 tomcat tomcat 79 May 20 08:03 tomcat
[root@localhost data]# 

此时我们通过ls -l 命令就可以看到data目录已经属于tomcat用户,且拥有查看,写入,执行权限

2.完成了用户创建后,我们就要开始完成tomcat启动脚本。

如代码所示:

#!/bin/bash
tomcat_home=/data/tomcat/tomcat-8484
SHUTDOWN=$tomcat_home/bin/shutdown.sh
STARTTOMCAT=$tomcat_home/bin/startup.sh
case $1 in
start)
echo "启动$tomcat_home"
$STARTTOMCAT
cd /data/tomcat/tomcat-8484/logs
tail -f catalina.out
;;
stop)
echo "关闭$tomcat_home"
#$SHUTDOWN
netstat -anp | grep 8484| grep -v grep | awk '{print $7}' | sed -e 's//java//g' | sed -e 's/^/kill -9 /g' | sh
#pidlist=`ps -ef |grep tomcat |grep -v "grep"|awk '{print $2}'`
#kill -9 $pidlist
#删除日志文件,如果你不先删除可以不要下面一行
#rm $tomcat_home/logs/* -rf
#删除tomcat的临时目录
#rm $tomcat_home/work/* -rf
;;
restart)
echo "关闭$tomcat_home"
$SHUTDOWN
#pidlist=`ps -ef |grep tomcat |grep -v "grep"|awk '{print $2}'`
#pidlist=`netstat -anp |grep 8484 |grep -v "grep"|awk '{print $2}'`
#netstat -anp | grep 8484| grep -v grep | awk '{print $7}' | sed -e 's//java//g' | sed -e 's/^/kill -9 /g' | sh
#kill -9 $pidlist
sleep 5
echo "启动$tomcat_home"
$STARTTOMCAT
#看启动日志
#tail -f $tomcat_home/logs/catalina.out
;;
logs)
cd /data/tomcat/tomcat-8484/logs
tail -f catalina.out
;;
esac 

上面代码就是tomcat启动脚本,首先我们要创建一个文本文件,然后将后缀名变成.sh,这里我是用端口号为8484的tomcat作为例子,从脚本文件中可以看到,总共只需对自己tomcat位置和日志位置进行自定义改动后就可以使用,总共有四个命令,start,stop,restart,logs。

脚本文件创建好后,只需将它放入你的服务器中,位置可以自己随意选择,我这里就把它放在了tomcat下bin目录中。

脚本文件放入服务器后其实还不能使用,会有两个问题待解决,一个是格式问题,一个是权限问题。因为我们是文本文件创建的,其格式是文本格式,我们要改成unix格式,所以要进行如下设置

sed -i "s/
//" tomcat-8484.sh #设置脚本文件为unix格式 

完成了格式设置后就要为该脚本文件设置权限,因为linux默认文件的权限是drwxr-xr-x,即所有运行权限赋予文件所有者也就是系统管理员(当前我是用系统管理员登录),把读和运行的权限赋予群组用户,把读的权限赋予其他用户,所以我们要对脚本文件权限进行重新设置。

chmod 777 ./tomcat-8484.sh 

chmod命令就是改变权限的命令,这个777是什么意思呢?

在Linux系统中,文件或目录的权限又分为3种:只读、只写、可执行。

依照上面的表格,权限组合就是对应权限值求和,如下:

7 = 4 + 2 + 1 读写运行权限

5 = 4 + 1 读和运行权限

4 = 4 只读权限

因此,大家也就明白了 chmod 777 ./tomcat-8484.sh 命令的含义了。

此时我们的tomcat启动脚本就完成了,下面我们来演示一下。

启动

[root@localhost bin]# ./tomcat-8484.sh start
启动/data/tomcat/tomcat-8484
Using CATALINA_BASE: /data/tomcat/tomcat-8484
Using CATALINA_HOME: /data/tomcat/tomcat-8484
Using CATALINA_TMPDIR: /data/tomcat/tomcat-8484/temp
Using JRE_HOME: /usr
Using CLASSPATH: /data/tomcat/tomcat-8484/bin/bootstrap.jar:/data/tomcat/tomcat-8484/bin/tomcat-juli.jar
Tomcat started. 

我们查看进程看一下是否真的启动

[root@localhost bin]# ps -ef |grep tomcat
root 5569 1 7 14:09 pts/0 00:00:06 /usr/bin/java -Djava.util.logging.config.file=/data/tomcat/tomcat-8484/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dignore.endorsed.dirs= -classpath /data/tomcat/tomcat-8484/bin/bootstrap.jar:/data/tomcat/tomcat-8484/bin/tomcat-juli.jar -Dcatalina.base=/data/tomcat/tomcat-8484 -Dcatalina.home=/data/tomcat/tomcat-8484 -Djava.io.tmpdir=/data/tomcat/tomcat-8484/temp org.apache.catalina.startup.Bootstrap start
root 5611 5340 0 14:10 pts/0 00:00:00 grep --color=auto tomcat 

可以看到启动没有问题。

关闭

[root@localhost bin]# ./tomcat-8484.sh stop
关闭/data/tomcat/tomcat-8484
sh: line 2: kill: (18484) - No such process
[root@localhost bin]# ps -ef |grep tomcat
root 5621 5340 0 14:13 pts/0 00:00:00 grep --color=auto tomcat 

查看进程确实是关闭成功的,好了我们的tomcat启动脚本也就大功告成了,这个脚本还可以自己在此基础上进行延伸,例如在启动后就立即查看日志等。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。

(0)

相关推荐

  • 解析Tomcat的启动脚本--startup.bat

    概述 我们通常使用 Tomcat 中的 startup.bat 来启动 Tomcat. 但是这其中干了一些什么事呢? 大家都知道一个 Java 程序需要启动的话, 肯定需要 main 方法, 那么这个 main 方法在哪呢? Tomcat 脚本中又是配置了一些什么参数呢, 什么情况下 Tomcat 会启动失败呢? 带着一些列的疑问我们来分析 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat startup.bat 脚本 该

  • windows使用批处理发布web到tomcat并启动tomcat脚本分享

    复制代码 代码如下: @ECHO OFF@REM 部署WEB系统到Tomcatset date=%date:~0,10%set time=%time:~0,8%set currDate=%date% %time%echo 开始运行将工作空间里面编译后的代码拷贝到Tomcat中...%currDate% echo 设置参数set WORK_SPACE=J:\飘\IT\workspaceset PRJ_NAME=MyStruts1Prjset PRJ_WEB_ROOT=MyStruts1Prj\We

  • centos6配置tomcat8开机自启动脚本

    1.vim /etc/init.d/tomcat #!/bin/bash # # tomcat startup script for the Tomcat server # # chkconfig: 345 80 20 # description: start the tomcat deamon # # Source function library . /etc/rc.d/init.d/functions prog=tomcat JAVA_HOME=/usr/local/jdk1.8.0_16

  • 解析Tomcat的启动脚本--catalina.bat

    概述 Tomcat 的三个最重要的启动脚本: startup.bat catalina.bat setclasspath.bat 上一篇咱们分析了 startup.bat 脚本 这一篇咱们来分析 catalina.bat 脚本. 至于 setclasspath.bat 这个脚本, 相信看完这一篇, 就可以自己看懂这个脚本了. 可以点击下载 [ setclasspath.bat 脚本 ]查看附注释的 setclasspath.bat 脚本 catalina.bat 这个脚本的代码有点多, 就单独弄

  • Windows server利用批处理脚本判断端口启动tomcat的方法

    win server服务器上面的tomcat老是不定时挂掉, 于是利用定时操作脚本判断tomcat80端口是否在运行, 如果运行则放过, 如果down掉就启动tomcat,解决tomcat不定时挂掉导致业务数据流通丢失问题.不扯淡, 上脚本. 1.给tomcat赋予环境变量 变量名:CATALINA_HOME 路径:C:\Program Files\Java\apache-tomcat-8.0.35 2.批处理脚本(startTomcat.bat) ::Final interpretation

  • linux环境下编写shell脚本实现启动停止tomcat服务的方法

    第一步:以管理员的身份进入控制台,在指定目录下新建一个shell脚本,我这里命名为tomcat.sh 第二步:编写shell脚本 #!/bin/bash tomcat_home=/usr/tomcat/apache-tomcat-8.0.48 SHUTDOWN=$tomcat_home/bin/shutdown.sh STARTTOMCAT=$tomcat_home/bin/startup.sh case $1 in start) echo "启动$tomcat_home" $STAR

  • 非常实用的Tomcat启动脚本实现方法

    前言 有这样一个场景,公司为了安全起见,需要对所有登录Linux服务器做安全限制,要求除了管理员其他要登录linux服务器的员工不能用最高权限账号登录,要创建新的用户,对目录及文件权限做出控制,只能对需要操作的目录允许读,写,执行权限,其他目录只有读的权限,并且所有tomcat不能直接在bin中用startup.sh,shutdown.sh进行启动和停止,要通过写shell脚本进行此操作,也就是说有两个步骤,创建用户并设置权限,写tomcat启动脚本,下面我们就完成这两个步骤. 1.首先我们就来

  • php-fpm服务启动脚本的方法

    这个我自己在用,没问题,有三个path需要自己酌情修改. 先创建自启动文件:/etc/init.d/php-fpm 内容如下: #! /bin/sh ### BEGIN INIT INFO # Provides: php-fpm # Required-Start: $remote_fs $network # Required-Stop: $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Descr

  • Ubuntu 14.04设置开机启动脚本的方法

    rc.local脚本 rc.local脚本是一个ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令.该脚本位于/etc/路径下,需要root权限才能修改. 该脚本具体格式如下: #!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success o

  • 编写shell脚本实现tomcat定时重启的方法

    最近我在学生价买的低配服务器上部署了一个很吃内存的网页,导致 tomcat 内存经常溢出而崩溃. 于是我上网找了一些教程编写了一个简单的每天定时启动 tomcat 的脚本,特此记录一下 我的环境是 centos 7 1. 在某个目录新建一个 .sh 脚本文件 vim tomcatStart.sh 2. 在 tomcatStart.sh 文件里面写入一下代码 #!/bin/bash /etc/profile tomcatPath="/usr/local/tomcat9" binPath=

  • Tomcat安装shell脚本的方法步骤

    目录 一.JAVA环境安装 二.JAVA环境安装检测 三.tomcat安装与启动 四.tomcat启动检测 五.脚本程序 六.执行效果检验 今天继续给大家介绍Linux运维相关知识,本文主要内容是Tomcat安装shell脚本(假设我们已经下载下来了JAVA和Tomcat的安装包). 一.JAVA环境安装 首先,要安装Tomcat,我们就必须安装JAVA环境.JAVA环境的安装需要解压JAVA的安装包,并且设置JAVA的环境变量,相关脚本如下所示: tar xf jdk-8u45-linux-x

  • Linux下Tomcat启动正常,但浏览器无法访问的解决方法

    1.服务器可ping通 2.服务器抓本地的http请求包,可以抓到 3.本地抓服务器返回的http响应包,抓不到 经过查找,是由于开启了Linux防火墙 查看防火墙配置(需要root权限) [root@localhost ~]# service iptables status Redirecting to /bin/systemctl status  iptables.service iptables.service - IPv4 firewall with iptables Loaded: l

  • SpringBoot应用部署到Tomcat中无法启动的解决方法

    背景 最近公司在做一些内部的小型Web应用时, 为了提高开发效率决定使用SpringBoot, 这货自带Servlet容器, 你在开发Web应用时可以直接在本地像运行控制台应用一样启动,省去了重复部署的时间:配置上相比于SpringMVC也是有了大大的简化.SpringBoot的应用可以直接打成一个可运行的jar包, 你无需发愁为了不同应用要部署多个Tomcat.但是实际部署时你会发现打成Jar包的方式有一个致命的缺点, 当你改动了一个资源文件.或者一个类时, 打要往服务器重新上传全量jar包.

  • Linux 启动停止SpringBoot jar 程序部署Shell 脚本的方法

    废话不多说了,先给大家上代码,具体代码如下所示: #!/bin/bash cd `dirname $0` CUR_SHELL_DIR=`pwd` CUR_SHELL_NAME=`basename ${BASH_SOURCE}` #修改这里jar包名即可 JAR_NAME="xxxxxxxxxxxx.jar" JAR_PATH=$CUR_SHELL_DIR/$JAR_NAME #JAVA_MEM_OPTS=" -server -Xms1024m -Xmx1024m -XX:Pe

随机推荐