Tomcat启动脚本
docker>Evan2018年10月19日 (五) 02:24的版本 (→sysd)
sysv
#!/bin/bash #cat /etc/init.d/pp-col 在centos7上试过 可运行 在测试的机器上已跑了 有空看一下sysd的怎么搞 # chkconfig: 345 99 28 # description: Starts/Stops Apache Tomcat #by evan #修改几个目录 if new ##export JAVA_HOME=/usr/java/jdk1.8.0_121/ #sed -i "s/JAVA_HOME=\/usr\/java\/default\//JAVA_HOME=\/usr\/java\/jdk1.8.0_121\//g" pp-collector.init #sed -i "s/CATALINA_HOME=\/data\/service\/pinpoint-collector\//CATALINA_HOME=\/data\/pp-col\//g" pp-collector.init #sed -i "s/CATALINA_BASE=\/data\/service\/pinpoint-collector\//CATALINA_BASE=\/data\/pp-col\//g" pp-collector.init #if old #sed -i "s/JAVA_HOME=\/usr\/java\/default\//JAVA_HOME=\/usr\/java\/jdk1.7.0_75\//g" /etc/init.d/tomcat3 #sed -i "s/CATALINA_HOME=\/data\/pp-col\//CATALINA_HOME=\/home\/appserver\/tomcat3\//g" /etc/init.d/tomcat3 #sed -i "s/CATALINA_BASE=\/data\/pp-col\//CATALINA_BASE=\/home\/appserver\/tomcat3\//g" /etc/init.d/tomcat3 #by evan # Tomcat start/stop/status script # Forked from: https://gist.github.com/valotas/1000094 # @author: Miglen Evlogiev <[email protected]> # Release updates: # Updated method for gathering pid of the current proccess # Added usage of CATALINA_BASE # Added coloring and additional status # Added check for existence of the tomcat user #Location of JAVA_HOME (bin files) export JAVA_HOME=/usr/java/jdk1.8.0_121/ #Add Java binary files to PATH export PATH=$JAVA_HOME/bin:$PATH #CATALINA_HOME is the location of the bin files of Tomcat export CATALINA_HOME=/data/pp-col/ #CATALINA_BASE is the location of the configuration files of this instance of Tomcat export CATALINA_BASE=/data/pp-col/ #TOMCAT_USER is the default user of tomcat export TOMCAT_USER=root #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=3 tomcat_pid() { echo `ps -fe | grep $CATALINA_BASE | grep -v grep | tr -s " "|cut -d" " -f2` } start() { pid=$(tomcat_pid) if [ -n "$pid" ] then echo -e "\e[00;31mTomcat is already running (pid: $pid)\e[00m" else # Start tomcat echo -e "\e[00;32mStarting tomcat\e[00m" #ulimit -n 100000 #umask 007 #/bin/su -p -s /bin/sh tomcat if [ `user_exists $TOMCAT_USER` = "1" ] then su $TOMCAT_USER -c $CATALINA_HOME/bin/startup.sh else sh $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" #/bin/su -p -s /bin/sh tomcat sh $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 "\n\e[00;31mwaiting for processes to exit\e[00m"; 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
sysd
#这个上次好像试了不太好 2.2 创建Tomcat启动参数setenv.sh文件 catalina.sh在执行的时候会调用同级路径下的setenv.sh来设置额外的环境变量,因此需要在/usr/local /tomcat/bin路径下创建setenv.sh文件。 执行脚本: [zm@zm-centos7 ~]$ su # 切换至root用户 密码: [root@zm-centos7 zm]# vim /usr/local/tomcat/bin/setenv.sh # 创建setenv.sh脚本 [root@zm-centos7 zm]# cat /usr/local/tomcat/bin/setenv.sh # 查看setenv.sh脚本内容 vi /home/appserver/tomcat3/bin/setenv.sh export CATALINA_HOME=/home/appserver/tomcat3/ export CATALINA_BASE=/home/appserver/tomcat3/ #设置Tomcat的PID文件 CATALINA_PID="$CATALINA_BASE/tomcat3.pid" #添加JVM选项 JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m" chmod +x setenv.sh #bak export CATALINA_HOME=/usr/local/tomcat export CATALINA_BASE=/usr/local/tomcat #设置Tomcat的PID文件 CATALINA_PID="$CATALINA_BASE/tomcat.pid" #添加JVM选项 JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms512M -Xmx1024M -XX:MaxNewSize=256m" 2.3 编写tomcat.service文件 在/usr/lib/systemd/system路径下添加tomcat.service文件。 注意:文件中目录路径必须是绝对路径 执行脚本: [root@zm-centos7 zm]# vim /usr/lib/systemd/system/tomcat3.service #创建tomcat.service服务脚本 [root@zm-centos7 zm]# cat /usr/lib/systemd/system/tomcat3.service #查看tomcat.service服务脚本 [Unit] Description=Tomcat3 After=syslog.target network.target remote-fs.target nss-lookup.target [Service] Type=forking PIDFile=/home/appserver/tomcat3/tomcat3.pid ExecStart=/home/appserver/tomcat3/bin/startup.sh ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target [unit]配置了服务的描述,规定了在network启动之后执行, [service]配置服务的pid,服务的启动,停止,重启 [install]配置了使用用户 --------- #这个还没测试过 不过应该是可以 的 [Unit] Description=Tomcat 8.5 servlet container After=network.target [Service] Type=forking User=tomcat Group=tomcat Environment="JAVA_HOME=/usr/lib/jvm/default-java" Environment="JAVA_OPTS=-Djava.security.egd=file:///dev/urandom" Environment="CATALINA_BASE=/opt/tomcat/latest" Environment="CATALINA_HOME=/opt/tomcat/latest" Environment="CATALINA_PID=/opt/tomcat/latest/temp/tomcat.pid" Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" ExecStart=/opt/tomcat/latest/bin/startup.sh ExecStop=/opt/tomcat/latest/bin/shutdown.sh [Install] WantedBy=multi-user.target 通知systemd我们创建了一个新的单元文件并通过执行以下命令来启动Tomcat服务: sudo systemctl daemon-reload sudo systemctl start tomcat 您可以使用以下命令检查服务状态: sudo systemctl status tomcat 2.4 测试Tomcat.service服务 执行脚本: [root@zm-centos7 zm]# systemctl enable tomcat3 # 设置开机自启动 Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service. # 自动创建软连接 [root@zm-centos7 zm]# systemctl start tomcat3 # 启动tomcat服务 [root@zm-centos7 zm]# systemctl status tomcat3 # 查看tomcat服务状态 ● tomcat.service - Tomcat8 =使用tomcat.service= systemctl enable tomcat.service systemctl start tomcat.service systemctl stop tomcat.service systemctl restart tomcat.service =trouble= [root@oracle-zimg-etc ~]# /home/appserver/tomcat3/bin/shutdown.sh Using CATALINA_BASE: /home/appserver/tomcat3/ Using CATALINA_HOME: /home/appserver/tomcat3/ Using CATALINA_TMPDIR: /home/appserver/tomcat3//temp Using JRE_HOME: /usr/java/jdk1.7.0_75 Using CLASSPATH: /home/appserver/tomcat3//bin/bootstrap.jar:/home/appserver/tomcat3//bin/tomcat-juli.jar Using CATALINA_PID: /home/appserver/tomcat3//tomcat3.pid $CATALINA_PID was set but the specified file does not exist. Is Tomcat running? Stop aborted. 程序在的 但是停止时会这样 也就是 自带的停止脚本会无效 哦 第一次就会这样 第一次强制停止 以后的 以后的脚本 =see also= [https://blog.csdn.net/oaim_zh/article/details/78319863 CentOS7下利用systemd机制实现tomcat开机自启动]