échec du script de démarrage de chkconfig, le script s'exécute correctement

J'ai récemment acheté un vps et j'ai essayé de créer un script de démarrage / redémarrage pour démarrer mon programme java. Je cours CentOS 6. Le script fonctionne si je l'exécute manuellement avec cette command:

service policyserver démarrer

Mais ne s'exécute pas automatiquement, crée un file dans le file /tmp/test.log avec l'erreur suivante:

Démarrage de Policy Server: échec

Voici le script de démarrage à l'intérieur de /etc/init.d/

 #!/bin/bash # #policyserver: Startup script for CamSpark Policy Server Application. # #chkconfig: 3 80 05 #description: Startup script for Cam Spark Policy Server Application. CAMSPARK_POLICY_HOME=/tools/camsparkserver/Policy; export CAMSPARK_POLICY_HOME start() { echo -n "Starting Policy Server: " $CAMSPARK_POLICY_HOME/Policy.sh start >> /tmp/test.log sleep 2 echo "done" } stop() { echo -n "Stopping Policy Server: " $CAMSPARK_POLICY_HOME/Policy.sh stop echo "done" } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop start ;; *) echo $"Usage: policyserver {start|stop|restart}" exit esac 

Voici le script principal (ne peut pas déplacer ce script)

 #!/bin/bash # # chkconfig: 345 99 05 # description: Java deamon script # # A non-SUSE Linux start/stop script for Java daemons. # # Set this to your Java installation JAVA_HOME=/usr/java/latest scriptFile=$(readlink -fn $(type -p $0)) # the absolute, dereferenced path of this script file scriptDir=$(dirname $scriptFile) # absolute path of the script directory serviceNameLo="policyserver" # service name with the first letter in lowercase serviceName="PolicyServer" # service name serviceUser="root" # OS user name for the service serviceGroup="root" # OS group name for the service applDir="/tools/camsparkserver/Policy" # home directory of the service application serviceUserHome="/home/$serviceUser" # home directory of the service user serviceLogFile="/var/log/$serviceNameLo.log" # log file for StdOut/StdErr maxShutdownTime=15 # maximum number of seconds to wait for the daemon to terminate normally pidFile="/var/run/$serviceNameLo.pid" # name of PID file (PID = process ID number) javaCommand="java" # name of the Java launcher without the path javaExe="$javaCommand" # file name of the Java application launcher executable javaArgs="PolicyServer" # arguments for Java launcher javaCommandLine="$javaExe $javaArgs" # command line to start the Java service application javaCommandLineKeyword="PolicyServer" # a keyword that occurs on the commandline, used to detect an already running service process and to distinguish it from others # Makes the file $1 writable by the group $serviceGroup. function makeFileWritable { local filename="$1" touch $filename || return 1 chgrp $serviceGroup $filename || return 1 chmod g+w $filename || return 1 return 0; } # Returns 0 if the process with PID $1 is running. function checkProcessIsRunning { local pid="$1" if [ -z "$pid" -o "$pid" == " " ]; then return 1; fi if [ ! -e /proc/$pid ]; then return 1; fi return 0; } # Returns 0 if the process with PID $1 is our Java service process. function checkProcessIsOurService { local pid="$1" if [ "$(ps -p $pid --no-headers -o comm)" != "$javaCommand" ]; then return 1; fi grep -q --binary -F "$javaCommandLineKeyword" /proc/$pid/cmdline if [ $? -ne 0 ]; then return 1; fi return 0; } # Returns 0 when the service is running and sets the variable $pid to the PID. function getServicePID { if [ ! -f $pidFile ]; then return 1; fi pid="$(<$pidFile)" checkProcessIsRunning $pid || return 1 checkProcessIsOurService $pid || return 1 return 0; } function startServiceProcess { cd $applDir || return 1 rm -f $pidFile makeFileWritable $pidFile || return 1 makeFileWritable $serviceLogFile || return 1 cmd="nohup $javaCommandLine >>$serviceLogFile 2>&1 & echo \$! >$pidFile" # Don't forget to add -H so the HOME environment variable will be set correctly. sudo -u $serviceUser -H $SHELL -c "$cmd" || return 1 sleep 0.1 pid="$(<$pidFile)" if checkProcessIsRunning $pid; then :; else echo -ne "\n$serviceName start failed, see logfile." return 1 fi return 0; } function stopServiceProcess { kill $pid || return 1 for ((i=0; i<maxShutdownTime*10; i++)); do checkProcessIsRunning $pid if [ $? -ne 0 ]; then rm -f $pidFile return 0 fi sleep 0.1 done echo -e "\n$serviceName did not terminate within $maxShutdownTime seconds, sending SIGKILL..." kill -s KILL $pid || return 1 local killWaitTime=15 for ((i=0; i<killWaitTime*10; i++)); do checkProcessIsRunning $pid if [ $? -ne 0 ]; then rm -f $pidFile return 0 fi sleep 0.1 done echo "Error: $serviceName could not be stopped within $maxShutdownTime+$killWaitTime seconds!" return 1; } function startService { getServicePID if [ $? -eq 0 ]; then echo -n "$serviceName is already running"; RETVAL=0; return 0; fi echo -n "Starting $serviceName " startServiceProcess if [ $? -ne 0 ]; then RETVAL=1; echo "failed"; return 1; fi echo "started PID=$pid" RETVAL=0 return 0; } function stopService { getServicePID if [ $? -ne 0 ]; then echo -n "$serviceName is not running"; RETVAL=0; echo ""; return 0; fi echo -n "Stopping $serviceName " stopServiceProcess if [ $? -ne 0 ]; then RETVAL=1; echo "failed"; return 1; fi echo "stopped PID=$pid" RETVAL=0 return 0; } function checkServiceStatus { echo -n "Checking for $serviceName: " if getServicePID; then echo "running PID=$pid" RETVAL=0 else echo "stopped" RETVAL=3 fi return 0; } function main { RETVAL=0 case "$1" in start) # starts the Java program as a Linux service startService ;; stop) # stops the Java program service stopService ;; restart) # stops and restarts the service stopService && startService ;; status) # displays the service status checkServiceStatus ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 1 ;; esac exit $RETVAL } main $1 

Est-ce que quelqu'un sait ce qui pourrait être le problème?

EDIT: a couru l'une des réponses affichées ici.

Voici ce que je reçois quand je viens d'exécuter cette command

 [root@camspark Policy]# service policyserver stop Stopping Policy Server: Stopping PolicyServer stopped PID=683 done [root@camspark Policy]# bash -x service policyserver start |& tee policyserver_startup.log + . /etc/init.d/functions ++ TEXTDOMAIN=initscripts ++ umask 022 ++ PATH=/sbin:/usr/sbin:/bin:/usr/bin ++ export PATH ++ '[' -z '' ']' ++ COLUMNS=80 ++ '[' -z '' ']' +++ /sbin/consoletype ++ CONSOLETYPE=pty ++ '[' -f /etc/sysconfig/i18n -a -z '' -a -z '' ']' ++ . /etc/profile.d/lang.sh ++ unset LANGSH_SOURCED ++ '[' -z '' ']' ++ '[' -f /etc/sysconfig/init ']' ++ . /etc/sysconfig/init +++ BOOTUP=color +++ RES_COL=60 +++ MOVE_TO_COL='echo -en \033[60G' +++ SETCOLOR_SUCCESS='echo -en \033[0;32m' +++ SETCOLOR_FAILURE='echo -en \033[0;31m' +++ SETCOLOR_WARNING='echo -en \033[0;33m' +++ SETCOLOR_NORMAL='echo -en \033[0;39m' +++ PROMPT=no +++ AUTOSWAP=no +++ ACTIVE_CONSOLES='/dev/tty[1-6]' +++ SINGLE=/sbin/sushell ++ '[' pty = serial ']' ++ __sed_discard_ignored_files='/\(~\|\.bak\|\.orig\|\.rpmnew\|\.rpmorig\|\.rpmsave\)$/d' ++ basename service + VERSION='service ver. 0.91' ++ basename service + USAGE='Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]' + SERVICE= + SERVICEDIR=/etc/init.d + OPTIONS= + '[' 2 -eq 0 ']' + cd / + '[' 2 -gt 0 ']' + case "${1}" in + '[' -z '' -a 2 -eq 1 -a policyserver = --status-all ']' + '[' 2 -eq 2 -a start = --full-restart ']' + '[' -z '' ']' + SERVICE=policyserver + shift + '[' 1 -gt 0 ']' + case "${1}" in + '[' -z policyserver -a 1 -eq 1 -a start = --status-all ']' + '[' 1 -eq 2 -a '' = --full-restart ']' + '[' -z policyserver ']' + OPTIONS=' start' + shift + '[' 0 -gt 0 ']' + '[' -f /etc/init.d/policyserver ']' + env -i PATH=/sbin:/usr/sbin:/bin:/usr/bin TERM=xterm /etc/init.d/policyserver start Starting Policy Server: done [root@camspark Policy]# 

Voici ce que contient ce file journal

 [root@camspark Policy]# head policyserver_startup.log + . /etc/init.d/functions ++ TEXTDOMAIN=initscripts ++ umask 022 ++ PATH=/sbin:/usr/sbin:/bin:/usr/bin ++ export PATH ++ '[' -z '' ']' ++ COLUMNS=80 ++ '[' -z '' ']' +++ /sbin/consoletype ++ CONSOLETYPE=pty [root@camspark Policy]# 

Vous pouvez déboguer un problème comme celui-ci en exécutant le script de démarrage d'une manière plus détaillée.

 $ bash -x service policyserver start 

Vous pouvez également capturer cette sortie dans un file journal.

 $ bash -x service policyserver start |& tee policyserver_startup.log 

Vous pouvez ensuite parcourir le file journal et voir quelle command échoue.