我的 Java 应用程序有两个要求。如果它死了,请重新启动它。如果服务器重新启动,请重新启动它 - 很简单。使用此处的答案,我有一个脚本,该脚本将在 java 应用程序终止时重新启动。
#!/bin/bash 直到 java -Xms256m -Xmx768m -jar MyApp.jar;做 echo "MyApp 崩溃,退出代码 $?. Respawning..." >&2 睡觉 5 完毕
我可以用“nohup restart_script.sh &”运行它,它会运行一整天而不会出现问题。现在是启动要求。我使用 /etc/init.d/crond 脚本并用我的脚本替换了 crond 二进制文件,但它在启动时挂起。
#!/bin/bash # # 我的应用程序的初始化文件。 # . /etc/init.d/functions MYAPP=restart_script.sh PID_FILE=/var/run/myapp.pid 开始(){ echo -n "启动我的应用程序" 守护进程 --user appuser $MYAPP RETVAL=$? 回声 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/myapp 返回 $RETVAL } 停止(){ echo -n "停止我的应用程序" 杀进程 $MYAPP RETVAL=$? 回声 [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/myapp 返回 $RETVAL } ... 案例“$1”在 开始) 开始 ;; 停止) 停止 ;; ... 经社理事会
当我运行 /sbin/service myapp start 脚本启动但挂起控制台。我已经尝试过“daemon --user appuser nohup $MYAPP &”,我立即返回提示,没有任何 [OK] 指示,当我执行 ps 时,我仍然看到 init 挂起。任何想法如何在初始化脚本中调用脚本并让它正确返回?
谢谢,
格雷格