当前位置: 首页 > 科技观察

超实用的Tomcat启动脚本实现

时间:2023-03-22 00:55:49 科技观察

有这样一个场景,为了安全起见,公司需要对所有登录linux服务器进行安全限制。要求除administrator以外的其他想登录Linux服务器的员工不能使用***权限账号登录。要创建新用户,请控制目录和文件权限。只有需要操作的目录才有读、写、执行权限。其他目录只有读权限,所有tomcat都不能直接使用bin中的startup.sh。Shutdown.sh启动和停止。这个操作需要通过写shell脚本来完成,也就是说有两步,创建用户并设置权限,写tomcat启动脚本。接下来,我们将完成这两个步骤。1.首先,让我们创建一个普通用户。groupaddtomcat#添加组useradd-gtomcat-s/usr/sbin/nologintomcat#添加用户到组usermod-Ltomcat#锁定密码使密码无效passwdtomcat#设置密码通过这四步,我们创建普通用户,并create对于用户,我们先创建组,组创建好后,再创建用户,加入组。创建好用户后,开始给用户设置权限chown-Rtomcat:tomcat/data#给用户分配权限这里是给用户tomcat设置操作data目录及其子目录的权限,-R代表目录及其级联子目录。[root@localhostdata]#ls-ltotal0drwxr-xr-x.4tomcattomcat79May2008:03tomcat[root@localhostdata]#此时通过ls-l命令可以看到data目录已经属于tomcat用户,并且有permission2.完成用户创建后,我们开始完成tomcat的启动脚本。如代码所示:#!/bin/bashtomcat_home=/data/tomcat/tomcat-8484SHUTDOWN=$tomcat_home/bin/shutdown.shSTARTTOMCAT=$tomcat_home/bin/startup.shcase$1instart)echo"Start$tomcat_home"$STARTTOMCATcd/data/tomcat/tomcat-8484/logstail-fcatalina.out;;stop)echo"close$tomcat_home"#$SHUTDOWNnetstat-anp|grep8484|grep-vgrep|awk'{print$7}'|sed-e's//java//g'|sed-e's/^/kill-9/g'|sh#pidlist=`ps-ef|greptomcat|grep-v"grep"|awk'{print$2}'`#kill-9$pidlist#删除日志文件,如果不先删除,就不需要下面这行#rm$tomcat_home/logs/*-rf#删除tomcat的临时目录#rm$tomcat_home/work/*-rf;;restart)echo"Close$tomcat_home"$SHUTDOWN#pidlist=`ps-ef|greptomcat|grep-v"grep"|awk'{print$2}'`#pidlist=`netstat-anp|grep8484|grep-v"grep"|awk'{print$2}'`#netstat-anp|grep8484|grep-vgrep|awk'{print$7}'|sed-e's//java//g'|sed-e's/^/kill-9/g'|sh#kill-9$pidlistsleep5echo"Start$tomcat_home"$STARTTOMCAT#Seestartuplog#tail-f$tomcat_home/logs/catalina.out;;logs)cd/data/tomcat/tomcat-8484/logstail-fcata丽娜.out;;以上esac的代码就是tomcat的启动脚本。首先,我们需要创建一个文本文件,然后将后缀名改为.sh。这里我以端口号为8484的tomcat为例,从脚本文件可以看出,总的来说,你只需要对你的tomcat位置和log位置进行自定义修改即可。总共有四个命令。创建启动、停止、重新启动和日志脚本文件后,只需将它们放入您的服务器即可。位置可以自己选择,我这里放在tomcat下的bin目录下。实际上,脚本文件放在服务器上后就不能使用了。会有两个问题需要解决,一个是格式问题,一个是权限问题。因为我们创建的是一个文本文件,它的格式是文本格式,我们想把它改成unix格式,所以我们需要进行如下设置设置完成后,需要给脚本文件设置权限,因为默认文件linux的权限是drwxr-xr-x,即所有的运行权限都给文件拥有者,也就是系统管理员(目前我是以系统管理员身份登录的),设置readgrantthepermissiontorunandrunto对用户进行分组,并赋予其他用户读取权限,所以我们需要重新设置脚本文件的权限。chmod777./tomcat-8484.shchmod命令是更改权限的命令。这个777是什么意思?在Linux系统中,文件或目录的权限分为三种:只读、只写和可执行。根据上表,权限组合是相应权限值的总和,如下:7=4+2+1读写权限5=4+1读写权限4=4只读权限因此,大家都明白chmod777./tomcat-8484.sh命令的意思。至此我们的tomcat启动脚本就完成了,下面来演示一下。启动[root@localhostbin]#./tomcat-8484.shstartstart/data/tomcat/tomcat-8484UsingCATALINA_BASE:/data/tomcat/tomcat-8484UsingCATALINA_HOME:/data/tomcat/tomcat-8484UsingCATALINA_TMPDIR:/data/tomcat/tomcat-8484/tempUsingJRE_HOME:/usrUsingCLASSPATH:/data/tomcat/tomcat-8484/bin/bootstrap.jar:/data/tomcat/tomcat-8484/bin/tomcat-juli.jarTomcat已启动。我们查看进程是否真的启动了[root@localhostbin]#ps-ef|greptomcatroot55691714:09pts/000: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/temporg.apache.catalina.startup.Bootstrapstartroot56115340014:10pts/000:00:00grep--color=autotomcat可以看到启动没有问题。关闭[root@localhostbin]#./tomcat-8484.shstop关闭/data/tomcat/tomcat-8484sh:line2:kill:(18484)-Nosuchprocess[root@localhostbin]#ps-ef|greptomcatroot56215340014:13pts/000:00:00grep--color=autotomcat查看进程确实关闭成功,好了,我们的tomcat启动脚本就完成了,这个脚本还是可以自己在此基础上进行扩展,比如启动后立即查看日志。