Por que não apenas:
daemon --user mruser ${CONQ_DIR}/dgate -v
?
Editar:
cd ${CONQ_DIR} && daemon --user mruser ./dgate -v &
Estou tentando configurar um script de inicialização para um processo no 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
No entanto, o cd $CONQ_DIR
está sendo ignorado, porque o script comete erros:
# ./conquest start
Starting Conquest DICOM server: -bash: ./dgate: No such file or directory
[FAILED]
Por algum motivo, tenho que executar o dgate como ./dgate. Não consigo especificar o caminho completo /usr/local/conquest/dgate
O software veio com um script de inicialização para um sistema Debian, então o script usa start-stop-daemon
, com a opção --chdir
para onde o dgate está, mas eu não encontrei uma maneira de fazer isso com a função do daemon do Redhat .
A antiga pergunta ainda é antiga: você pode solucionar esse tipo de problema com um set -x
(xtrace) na parte superior do seu script. Além disso, considere set -e
, portanto, o script é um erro anterior.
O arquivo dgate tem permissão de execução?
Tente ecoar o diretório atual (echo 'pwd') antes de iniciar o dgate.
Atenciosamente, Lorenzo.
export CONQ_DIR O subshell não sabe sobre o diretório.
por exemplo,
$ FOO=skhfkjsdh
$ cat foo.sh
echo $FOO
$ sh foo.sh
$ export FOO=skhfkjsdh
$ sh foo.sh
skhfkjsdh
$