当前位置: 首页 > news >正文

[ 手记 ] 关于tomcat开机启动设置问题

 

  今天尝试将tomcat设置为开机启动,大家都知道只需要将启动脚本添加到/etc/rc.local下面开机就会自动执行。

/usr/local/tomcat8.0/bin/startup.sh >> /etc/rc.local

  重启机器,进行测试。结果未能如愿。这是为什么呢?开始排查。手动执行没有报错。于是开始查看日志。

[root@server2 ~]# tail /var/log/boot.log 
Starting nginx:                                            [  OK  ]
Starting crond:                                            [  OK  ]
Starting atd:                                              [  OK  ]
Starting certmonger:                                       [  OK  ]
Using CATALINA_BASE:   /usr/local/tomcat8.0
Using CATALINA_HOME:   /usr/local/tomcat8.0
Using CATALINA_TMPDIR: /usr/local/tomcat8.0/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /usr/local/tomcat8.0/bin/bootstrap.jar:/usr/local/tomcat8.0/bin/tomcat-juli.jar
Tomcat started.

  发现日志里tomcat启动也没有异常,这下就非常疑惑了。

  回想下开机顺序: /sbin/init --> /etc/inittab --> /etc/rc.d/rc.sysinit --> /etc/rc.d/* --> /etc/rc.local --> login界面(username/passwd) --> /etc/profile.d/file --> /etc/profile

  rc.local 在 profile 前面执行,而jdk相关环境变量却在 profile 里。想要解决这个问题就需要在 tomcat脚本启动前就执行/etc/profile 才行。

[root@server2 ~]# vim /etc/rc.local 

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local
source /etc/profile  # 执行下 /etc/profile
/usr/local/tomcat8.0/bin/startup.sh
echo "tomcat test."

  再次重启机器测试。

[root@server2 ~]# tail /var/log/boot.log 
Starting crond:                                            [  OK  ]
Starting atd:                                              [  OK  ]
Starting certmonger:                                       [  OK  ]
Using CATALINA_BASE:   /usr/local/tomcat8.0
Using CATALINA_HOME:   /usr/local/tomcat8.0
Using CATALINA_TMPDIR: /usr/local/tomcat8.0/temp
Using JRE_HOME:        /usr/local/jdk1.8
Using CLASSPATH:       /usr/local/tomcat8.0/bin/bootstrap.jar:/usr/local/tomcat8.0/bin/tomcat-juli.jar
Tomcat started.
tomcat test.

  日志OK。

[root@server2 ~]# netstat -ntplu | grep 8080
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      1590/java 

  服务也OK.

  这样的问题在以后可能也会遇到。可见,基础的原理和知识对解决问题有多重要。Linux开机执行文件的顺序一定要牢记。

 

转载于:https://www.cnblogs.com/hukey/p/5370176.html

相关文章:

  • 复制
  • 退役了哎
  • Java设计模式系列之迭代器模式
  • 【算法】RMQ LCA 讲课杂记
  • javascript高级程序设计
  • Objective—C中的排序及Compare陷阱
  • 《Struts2.x权威指南》学习笔记2
  • 【作业3】关于C语言的问卷调查
  • 控制台手动编译Qt5程序
  • 创建NetWorkDataset---Shapefile篇
  • 获取验证码按钮点击后,一分钟内不可继续点击
  • Delphi Canvas的FillRect(const Rect: TRect) 函数的作用
  • B+/-Tree原理及mysql的索引分析
  • 关闭Rootless机制
  • 图像缩放算法
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • AngularJS指令开发(1)——参数详解
  • ERLANG 网工修炼笔记 ---- UDP
  • ES6核心特性
  • JavaScript DOM 10 - 滚动
  • JavaScript HTML DOM
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Java新版本的开发已正式进入轨道,版本号18.3
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • LeetCode18.四数之和 JavaScript
  • MYSQL 的 IF 函数
  • Nacos系列:Nacos的Java SDK使用
  • React16时代,该用什么姿势写 React ?
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • ViewService——一种保证客户端与服务端同步的方法
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 技术:超级实用的电脑小技巧
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 两列自适应布局方案整理
  • 时间复杂度与空间复杂度分析
  • 使用putty远程连接linux
  • 双管齐下,VMware的容器新战略
  • 算法-插入排序
  • 运行时添加log4j2的appender
  • Nginx实现动静分离
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​第20课 在Android Native开发中加入新的C++类
  • ​批处理文件中的errorlevel用法
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #pragma multi_compile #pragma shader_feature
  • #pragma预处理命令
  • (vue)页面文件上传获取:action地址
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (ZT)出版业改革:该死的死,该生的生
  • (二)WCF的Binding模型
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计SSM在线影视购票系统