需要自定义init脚本的帮助

我正在尝试为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。 我无法指定完整path/usr/local/conquest/dgate

该软件带有一个用于Debian系统的初始化脚本,所以脚本使用了start-stop-daemon ,并且将--chdir选项--chdir为dgate所在的位置,但是我还没有find用Redhat守护进程来实现这一点的方法。

为什么不只是:

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

编辑:

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

旧的问题仍旧存在:您可以使用脚本顶部的set -x (xtrace) set -x来解决这类问题。 另外,考虑set -e ,所以脚本错误提前。

dgate文件是否具有执行权限?

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

问候,洛伦佐。

导出CONQ_DIR子shell不知道目录。

例如

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