service 启动服务和直接执行启动脚本的区别

回复 收藏

公司的一个项目用的 tomcat ,之前都是用 service tomcat start 启动的, 里面一个工程需要读 $LD_LIBRARY_PATH 环境变量下的 .so 文件,这个环境变量已经在 /etc/profile 里面设置了。但是搞了一下午死活读不到。后来用  /etc/init.d/tomcat start  启动后就成功了.,百思不得其解,后来找到一篇博客:

http://www.ywnds.com/?p=5230&viewuser=29

具体验证步骤可以看上面链接的博客,这里引用一下博客中的结论:

“查了一下service的手册,可以了解service的一些细节:service运行指定服务(称之为System V初始脚本)时,把大部分环境变量去掉了,只保留TERM和少数变量,并且把当前路径置为/,也就是说是在一个可以预测的非常干净的环境中运行服务脚本。这种脚本保存在/etc/init.d目录中,它至少要支持start和stop命令。

所以,当把一个shell脚本放入到service中时,需要设定好PATH等环境。”

最后我的解决方法:

在 /etc/init.d/tomcat 中加入需要的环境变量,再用 service tomcat start 启动,问题顺利解决。

1I7EAH`1CE(`F0[74]LPEEO.png

2017-10-26 14:24 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: