Jim*_*Jim 3 linux java opensuse tomcat
当我在其中创建一个启动脚本/etc/init.d并执行export一个变量时,这个变量是否持续存在并且对启动的进程“可见”?
具体来说,我有以下脚本在 init.d 中启动 tomcat,我手动启动start:
#!/bin/bash
RETVAL=$?
export JRE_HOME=/home/jre
export PATH=/home/jre/bin/:${PATH}
export CATALINA_HOME=/home/apache-tomcat-7.0.25
case "$1" in
start)
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
echo $"Starting Tomcat"
/bin/su root $CATALINA_HOME/bin/startup.sh
fi
;;
stop)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];
then
echo $"Stopping Tomcat"
/bin/su root $CATALINA_HOME/bin/shutdown.sh
fi
;;
restart)
if [ -f $CATALINA_HOME/bin/shutdown.sh ];
then
echo $"Stopping Tomcat"
/bin/su root $CATALINA_HOME/bin/shutdown.sh
fi
if [ -f $CATALINA_HOME/bin/startup.sh ];
then
echo $"Starting Tomcat"
/bin/su root $CATALINA_HOME/bin/startup.sh
fi
;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
;;
esac
exit $RETVAL
Run Code Online (Sandbox Code Playgroud)
现在在 Tomcat 中我使用连接池,当我使用绝对 url 时,一切正常。IE:url="jdbc:h2:file:/home/apache-tomcat-7.0.25/webapps/myDB;SCHEMA=mySchema"
但是,如果我$CATALINA_HOME在 url 中使用相对 url ie ,即url="jdbc:h2:file:$CATALINA_HOME\webapps\myDB;SCHEMA=mySchema"这不起作用,我会收到 JNDI 异常。
请注意,在我的脚本中,我已导出$CATALINA_HOME为/home/apache-tomcat-7.0.25
似乎$CATALINA_HOME没有为 Tomcat 的启动实例设置。
可能是这种情况吗?任何人都知道为什么带有环境变量的 url 不起作用?
创建新进程时,环境从父进程复制。因此,您在启动另一个进程之前在脚本中设置的任何环境变量都应该存在。
su/sudo作为一种安全措施,一些程序会根据它们的调用方式对环境进行一些过滤。所以你的 init 脚本正在调用suwhich is starting $CATALINA_HOME/bin/startup.sh,我猜它实际上是在做 Tomcast 启动。有些东西可能正在删除或忽略变量。
我确实想知道您为什么su root从 init 脚本中调用 using 。默认情况下,初始化脚本以 root 身份运行,您应该没有理由需要再次成为 root 用户。如果我是你,我会放弃似乎毫无价值的电话su。
只为帮你排忧解难。作为 root,在 Linux 上,当您/proc挂载后,您可以查看当前的环境。
例如,如果 tomcat 的进程 ID 为 1234,那么您需要查看/proc/1234/environ. 任何设置的东西都应该在那里。
| 归档时间: |
|
| 查看次数: |
9799 次 |
| 最近记录: |