需要自定义初始化脚本的帮助

需要自定义初始化脚本的帮助

我正在尝试为 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,并选择--chdirdgate 的位置,但我还没有找到使用 Redhat 守护进程功能执行此操作的方法。

答案1

为什么不只是:

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

编辑:

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

答案2

set -x老问题还是老问题:您可以使用脚本顶部的 (xtrace)来解决此类问题。另外,请考虑set -e,以便尽早排除脚本错误。

答案3

dgate文件有执行权限吗?

在启动 dgate 之前尝试回显当前目录 (echo `pwd`)。

此致敬礼,洛伦佐。

答案4

export CONQ_DIR 子 shell 不知道该目录。

例如

$ FOO=skhfkjsdh
$ cat foo.sh

    echo $FOO

$ sh foo.sh

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

相关内容