Скрипт init.d для OpenXCAP в CentOS 6 - PullRequest
1 голос
/ 29 ноября 2011

Я немного новичок в Linux и OpenXCAP и пытаюсь создать сценарий init.d для OpenXCAP в CentOS 6.

Мой сценарий может запускать и останавливать службу OpenXCAP, но возвращает эту ошибку для команды status (состояние openxcap службы): openxcap dead но subsys заблокирован

Может быть, кто-нибудь может сказать мне, если проблема в сценарии init.d или в самой службе openxcap? В openxcap отсутствует какая-либо функция «дать статус»?

#!/bin/bash
#
# Startup script for OpenXCAP
#
# processname: openxcap
# pidfile: /var/run/openxcap/openxcap.pid
# chkconfig: - 85 15
# description: start, stop, restart OpenXCAP server
#
### BEGIN INIT INFO
# Provides: openxcap
# Required-Start: $local_fs $network
# Should-Start: mysqld
### END INIT INFO

# Source function library.
. /etc/rc.d/init.d/functions

APP_NAME=openxcap
APP_HOME=/usr/local/src/openxcap-2.0.1
PID_PATH=/var/run/openxcap/openxcap.pid
RETVAL=0

[ -f /etc/sysconfig/$APP_NAME ] && . /etc/sysconfig/$APP_NAME

start()
{
        echo -n $"Starting $APP_NAME: "
        daemon $APP_HOME/$APP_NAME $OPTIONS 2>/dev/null | tail -1
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch /var/lock/subsys/$APP_NAME
}

stop()
{
        echo -n $"Stopping $APP_NAME: "
        killproc -p $PID_PATH
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/$APP_NAME $PID_PATH
}

# See how we were called.
case "$1" in
        start)
                start
                ;;
        stop)
                stop
                ;;
        status)
                status $APP_NAME
                RETVAL=$?
                ;;
        restart|reload)
                stop
                start
                ;;
        *)
                echo $"Usage: $APP_NAME {start|stop|reload|restart|status|help}"
                exit 1
esac

exit $RETVAL

1 Ответ

0 голосов
/ 25 января 2012

Вы (надеюсь) записываете файл PID как /var/run/openxcap/openxcap.pid.

Я подозреваю, что ваша программа записывает один PID, но затем запускает другой процесс.Первый процесс умирает, поэтому sysvinit не знает, искать другой.

Однако файл блокировки, указывающий, что ваш процесс запущен, все еще присутствует.

Вы не можетеиметь возможность напрямую использовать функцию daemon для запуска этой программы;вам может потребоваться создать настроенную версию, которая будет «достаточно умной», чтобы определить правильный PID.

...