Назад | Перейти на главную страницу

поддерживать работу подсистемы Linux постоянно

Я создал файл подсистемы, который запускает созданную мной 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

Проблема в том, что эта служба перестает работать после того, как я закрываю сеанс терминала с сервером. Как сделать так, чтобы служба всегда работала в фоновом режиме?

Я не хочу использовать экран или nohup, потому что через некоторое время они перестают работать.

Спасибо!

Вам нужно написать свое Java-приложение как демон. Даже фоновые процессы могут прекратиться, когда вы закроете терминал.

Вам нужно фоновый процесс в вашем сценарии инициализации. В строке, в которой выполняется программа, используйте амперсанд & после имени процесса.

Вы можете показать нам сценарий?