本文废话连篇,重点是自启动用户不带PATH环境变量,启动的应用如果继承PATH将出现找不到命令的错误* *
今天下午,一个朋友问我,他为了方便服务器管理,让Tomcat自动启动,可是访问项目时Tomcat会报一个可执行文件找不到的错误,手动重启Tomcat就一切正常了。(ㆀ˘・з・˘)ωҺat?
我一接收,就霹雳怕啦的排除错误了起来,先想因为他这个项目依赖于另外一个软件,我一看,报错的软件正好是所依赖的软件的一个可执行文件,刚开始以为是那个软件比Tomcat后启动而引发的问题。检测发现并不是。后面我忽然想起一个问题。。。
init脚本自启动的时候是没有默认环境变量这么一说的(记得从哪看到过,但是找不到证据(ó﹏ò。)难受)。但是在开发的时候,他们应该是直接调用了那个函数(不是绝对地址),然而,自启动的Tomcat读取的PATH和用户再启动Tomcat的PATH是不一样的,所以才使得自启动的Tomcat找不到命令,二重启之后就可以了。都是因为PATH啊(ó﹏ò。)难受。
我在启动脚本中看到这样的代码
export JAVA_HOME=/opt/sunjdk
忽然之间觉醒,原来是需要
export PATH=/bin:/sbin:/usr/bin...
经测试这样确实可以,如此解决了朋友的问题。
认真的说,还是太年轻,书到用时方恨少。