我创build了一个运行我创build的Java程序的子系统文件。 子系统文件驻留在/etc/init.d中,允许我使用一致的接口(启动和停止)停止和启动服务。 它基于本教程: http : //www.tldp.org/HOWTO/HighQuality-Apps-HOWTO/boot.html
这是脚本的样子:
#!/bin/sh # # /etc/init.d/mysystem # Subsystem file for "MySystem" server # # chkconfig: 2345 95 05 # description: MySystem server daemon # # processname: MySystem # config: /etc/MySystem/mySystem.conf # config: /etc/sysconfig/mySystem # pidfile: /var/run/MySystem.pid # source function library . /etc/rc.d/init.d/functions # pull in sysconfig settings [ -f /etc/sysconfig/mySystem ] && . /etc/sysconfig/mySystem RETVAL=0 prog="MySystem" . . . start() { echo -n $"Starting $prog:" java -jar /bin/app.jar RETVAL=$? [ "$RETVAL" = 0 ] && touch /var/lock/subsys/$prog echo } stop() { echo -n $"Stopping $prog:" . . . killproc $prog -TERM RETVAL=$? [ "$RETVAL" = 0 ] && rm -f /var/lock/subsys/$prog echo } reload() { echo -n $"Reloading $prog:" killproc $prog -HUP RETVAL=$? echo } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; reload) reload ;; condrestart) if [ -f /var/lock/subsys/$prog ] ; then stop # avoid race sleep 3 start fi ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" RETVAL=1 esac exit $RETVAL
问题是这个服务在我closures与服务器的terminal会话后停止运行。 如何让服务永远在后台运行?
我不想用屏幕或nohup,因为这些时间过了一段时间。
谢谢!
您需要在初始化脚本中后台进程。 在执行该程序的行中,在进程名称后面使用&符号。
你能给我们看剧本吗?
您需要将您的Java应用程序编写为守护程序。 closuresterminal后,即使是后台进程也会死亡。