我对我的Java应用程序有两个要求。如果它死了,重新启动它。如果服务器重新启动,重新启动它 - 很简单。使用答案here我有一个脚本,将在Java应用程序死亡时重新启动。在启动时启动java进程并在死时自动重启
#!/bin/bash until java -Xms256m -Xmx768m -jar MyApp.jar; do echo "MyApp crashed with exit code $?. Respawning... " >&2 sleep 5 done
我可以用“nohup的restart_script.sh &”运行这个长将全天运行没有问题。现在为启动要求。我使用/etc/init.d/crond脚本并用脚本替换了crond二进制文件,但它在启动时挂起。
#!/bin/bash # # Init file for my application. # . /etc/init.d/functions MYAPP=restart_script.sh PID_FILE=/var/run/myapp.pid start(){ echo -n "Starting My App" daemon --user appuser $MYAPP RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/myapp return $RETVAL } stop(){ echo -n "Stopping my application" killproc $MYAPP RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/myapp return $RETVAL } ... case "$1" in start) start ;; stop) stop ;; ... esac
当我运行/ sbin/service myapp启动脚本启动但挂起控制台。我已经尝试了“守护进程 - 用户appuser nohup $ MYAPP &”,我立即返回提示,没有任何[OK]指示,当我执行ps时,我仍然看到init被挂起。任何想法如何在初始化脚本中调用脚本并使其正确返回?
感谢,
格雷格
这可能更适合http://superuser.com。 – danben 2010-02-05 18:49:35