【问题标题】:Unix script on startup in /etc/init.d not working/etc/init.d 中启动时的 Unix 脚本不起作用
【发布时间】:2014-09-14 19:47:39
【问题描述】:

我一直在尝试让我的 Java 应用程序在启动后作为后台守护程序运行。我已按照最佳答案here 中给出的说明进行操作,但无济于事。

这是我的 /etc/init.d/myapp 文件:

#!/bin/bash
# MyApp
#
# description: bla bla

case $1 in
    start)
        /bin/bash /var/lib/myapp/start.sh
    ;;
    stop)
        /bin/bash /var/lib/myapp/stop.sh
    ;;
    restart)
        /bin/bash /var/lib/myapp/stop.sh
        /bin/bash /var/lib/myapp/start.sh
    ;;
esac
exit 0

至于 /var/lib/myapp/start.sh,它看起来像这样:

#!/bin/bash
java -jar myapp-1.0.0RC.jar &

并且在通过 ssh 从终端运行时可以正常工作。

我还运行了update-rc.d myscript defaults 命令,但只收到了有关标题和 LSB 的警告

在此之后,一旦我重新启动服务器,应用程序就不会运行。任何帮助表示赞赏。

谢谢。

【问题讨论】:

  • 所有脚本(init 脚本、start.sh 和 stop.sh)都可以执行吗?手动运行/etc/init.d/myapp start 会发生什么?
  • @AndrewStubbs all files have been given 777 ...运行 myapp start 手动给出“无法访问 jarfile ....”这似乎是问题所在,但是,jar 在同一个文件夹中作为 start.sh
  • @AndrewStubbs 啊,我们走了...我现在明白了,所以即使我运行与 jar 文件位于同一文件夹中的脚本,主路径仍然保持不变。在运行 start.sh 之前将 cd /var/lib/myapp 添加到 /etc/init.d/myapp 文件就可以了。谢谢

标签: java bash unix startup init.d


【解决方案1】:

当 bash 脚本运行时,它们不会自动从包含它们的同一目录运行。

在启动 jar 之前,您需要更新脚本以将目录更改为包含脚本的目录:

#!/bin/bash
cd /var/lib/myapp/
java -jar myapp-1.0.0RC.jar &

或者,引用带有完整路径的jar文件:

#!/bin/bash
java -jar /var/lib/myapp/myapp-1.0.0RC.jar &

【讨论】:

  • 成功了。看到我需要 Java 应用程序来访问一些具有相对路径的文件,使用 cd 更改目录最适合我的解决方案。谢谢老哥
  • 嗯...显然即使我可以手动运行 /etc/init.d/myapp 启动,但在重新启动后它仍然没有运行...
  • 您可能还需要 java 可执行文件的完整路径
  • @OsaSoft 大概您确实从您链接的线程中运行了update-rc.d myscript defaults 步骤?如果是这样,我想这就是 Gus 所说的,将 java 更改为您的 java 二进制文件所在的位置,您可以使用 which java 找到它
  • @Gus 这确实解决了这个问题。有趣的是,在一种情况下它需要二进制文件的完整路径,而在另一种情况下则不需要。无论如何,非常感谢你们俩
【解决方案2】:

检查您的服务是否通过 chkconfig 正确注册

$ chkconfig --list

如果没有,您可以在输出中看到您的服务,然后尝试将此行添加到您的脚本中

#!/bin/bash
# chkconfig: 2345 95 20 
# description: bla bla
# processname: myapp

然后运行

chkconfig --add myapp

有关更多信息,您可以查看chkconfig 的手册页

【讨论】:

    猜你喜欢
    • 2011-12-19
    • 1970-01-01
    • 2015-01-12
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 2013-09-07
    • 2013-02-08
    相关资源
    最近更新 更多