【发布时间】:2014-05-20 11:23:29
【问题描述】:
我需要在 Centos (5.9) 启动时启动 Java 应用程序。
我正在尝试在启动时在 Centos 上启动一个简单的脚本(名为“lanzar.sh”):
#!/bin/sh
cd /home/someuser/Desktop/Dist
java -jar SomeApp.jar
我将“/bin/sh /home/someuser/Desktop/Dist/lanzar.sh”行附加到/etc/rc.d/rc.local。但是java应用程序没有启动。我有:
- 授予 /etc/rc.d/rc.local 文件 755 权限
- 将“lanzar.sh”的内容写入/etc/rc.d/rc.local。用分号隔开,并在不同的行中。
- 更改位置的“lanzar.sh”。
- 其他内容,取自其他不适用于我的线程。
我的 rc.loca 看起来像:
#!/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.
#
#Some comment
#Some comment
#Some comment
touch /var/lock/subsys/local
/bin/sh /home/fernando/Desktop/Dist/lanzar.sh
注意:我知道以前有人问过类似的问题,但是在测试了我通过谷歌搜索找到的许多答案后都没有成功,我不得不自己问这个问题。
【问题讨论】:
-
那个 java 应用是做什么的?它是否需要访问某些用户数据?它需要X服务器吗?它是否取决于要设置的某些环境变量?当您尝试此操作时,应用程序是否会记录任何错误消息?如果您在该脚本(到日志文件)中添加一些回显行,日志文件会被写入吗?
-
根据您的建议,我在其他命令之前添加了 -echo "Some log" > /var/log/mylog- 这一行。未生成日志。所以我认为问题是 rc.local 根本没有被执行。我不得不说,在问题开始发生之前,我替换了原始文件,但后来我运行了 -chmod 755 /etc/rc.d/rc.local-
-
将日志命令放入 rc.local 看看会发生什么。请记住,rc.local 不是以您的用户身份运行的,因此可能对您用户的主目录/etc 中的文件具有权限,也可能没有权限。
-
@EtanReisner ,实际上这就是我所做的。我将日志行(echo "Some log" > /var/log/mylog)放在 rc.local 中的第一个命令之前,但未创建日志文件。这就是为什么我认为 rc.local 没有被执行。至于用户目录的权限,当我以 root 身份从命令行运行应用程序时,它工作正常,但是我将把应用程序放在根子目录中进行测试。