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

Нужна помощь с настраиваемым скриптом инициализации

Я пытаюсь настроить сценарий инициализации для процесса в redhat linux:

#!/bin/sh
#
# Startup script for Conquest
#
# chkconfig: 345 85 15     - start or stop process definition within the boot process
# description: Conquest DICOM Server
# processname: conquest
# pidfile: /var/run/conquest.pid

# Source function library.      This creates the operating environment for the process to be started
. /etc/rc.d/init.d/functions

CONQ_DIR=/usr/local/conquest

case "$1" in
  start)
        echo -n "Starting Conquest DICOM server: "
        cd $CONQ_DIR && daemon --user mruser ./dgate -v                 - Starts only one process of a given name.
        echo
        touch /var/lock/subsys/conquest
        ;;
  stop)
        echo -n "Shutting down Conquest DICOM server: "
        killproc conquest
        echo
        rm -f /var/lock/subsys/conquest
        rm -f /var/run/conquest.pid      - Only if process generates this file
        ;;
  status)
        status conquest
        ;;
  restart)
        $0 stop
        $0 start
        ;;
  reload)
        echo -n "Reloading process-name: "
        killproc conquest -HUP
        echo
        ;;
  *)
        echo "Usage: $0 {start|stop|restart|reload|status}"
        exit 1
esac

exit 0

Однако cd $CONQ_DIR игнорируется из-за ошибки скрипта:

# ./conquest start
Starting Conquest DICOM server: -bash: ./dgate: No such file or directory
                                                           [FAILED]

По какой-то причине мне приходится запускать dgate как ./dgate. Я не могу указать полный путь /usr/local/conquest/dgate

Программное обеспечение поставляется со сценарием инициализации для системы Debian, поэтому сценарий использует start-stop-daemon, с возможностью --chdir туда, где находится dgate, но я не нашел способа сделать это с помощью функции демона Redhat.

Старый вопрос все же старый: вы можете решить эту проблему с помощью set -x (xtrace) вверху вашего скрипта. Также рассмотрите set -e, поэтому скрипт выйдет из строя раньше.

Почему не просто:

daemon --user mruser ${CONQ_DIR}/dgate -v

?

Редактировать:

cd ${CONQ_DIR} && daemon --user mruser ./dgate -v &

Есть ли у файла dhgate разрешение на выполнение?

Попытайтесь повторить текущий каталог (echo `pwd`) перед запуском dhgate.

С уважением, Лоренцо.

export CONQ_DIR Подоболочка не знает о каталоге.

например

$ FOO=skhfkjsdh
$ cat foo.sh

    echo $FOO

$ sh foo.sh

$ export FOO=skhfkjsdh
$ sh foo.sh
skhfkjsdh
$