[Ldl62] [LONG]Lancement de script au démarrage

David White dwhite@l...
Mar 1 Aou 17:45:39 CEST 2006


Hello tout le monde,

J'ai un petit soucis de variables d'environement ou de droits au 
lancement d'un script au démarrage d'une machine:
Sur une Red Hat j'ai un script prévu pour lancer mon usine à gaz Oracle 
(oui, pléonasme, je sais...) celui-ci est dans /etc/init.d/ et il en 
appelle 2 autres dans /home/user ...

Si je me mets dans un shell en root et que je le lance:
/etc/init.d/oracle_ocs start ça démarre bien comme il faut

Si je l'ajoute dans le démarrage au run level 3 (ou 5 c est pareil) avec
chkconfig --add oracle_ocs
chkconfig --level 3 oracle_ocs on

Et que l'on reboot , ça ne marche plus:
un ps fax montre bien la hiérarchie des scripts lancés:


0 /bin/bash /etc/rc.d/rc 3
 2420 ?        S      0:00  \_ initlog -q -c /etc/rc3.d/S99oracle_ocs start
 2421 ?        S      0:00      \_ /bin/bash /etc/rc3.d/S99oracle_ocs start
 2666 ?        S      0:00          \_ su - oracle -c 
/home/oracle/scripts/start_infra.sh > 
/home/oracle/scripts/ocsinfra_start.log

Les premières instructions du script oracle_ocs sont bien exécutées, 
mais le contenu du script start_infra.sh n'est pas lancé

Il n'y aurait pas une histoire de variables d'env non renseignées lors 
du démarrage??

David
-- 

Voici le début de oracle_ocs:

---------------------------------------------------
# Source ENV
[ -e /etc/oracle_OCS_env.sh ] || exit 1
. /etc/oracle_OCS_env.sh

RETVAL=0

touch $OCS_SCRIPTS_DIR/silentstart

start() {
        touch $OCS_SCRIPTS_DIR/ocsapps_start.log 
$OCS_SCRIPTS_DIR/ocsinfra_start.log
        chmod 777 $OCS_SCRIPTS_DIR/ocs*

        #Start OCS X server
        ps -ef | grep "$XWIN_CMD" | grep -v grep || (echo "Starting X 
server: "; . $OCS_SCRIPTS_DIR/startX.sh 2>/dev/null)

        #Start the infrastructure server
        echo -n $"Starting The OCS infrastructure: "
        echo
        su - $OCS_OWNER -c "$OCS_SCRIPTS_DIR/start_infra.sh > 
$OCS_SCRIPTS_DIR/ocsinfra_start.log"

==============================================
Et le début de start_infra.sh:

#!/bin/bash
[ -e /etc/oracle_OCS_env.sh ] || exit 1
. /etc/oracle_OCS_env.sh

[ -e $OCS_SCRIPTS_DIR/env_infra.sh ] || exit 1
. $OCS_SCRIPTS_DIR/env_infra.sh

if (test `whoami` != $OCS_OWNER)
then
  echo "Vous devez etre $OCS_OWNER ou $OCS_INFRA_USER pour lancer ce script"
  exit
fi

ps -ef | grep "$XWIN_CMD" | grep -v grep || (echo  "Entrer le mot de 
passe root afin de demarrer le serveur X" ; su - root -c 
"$OCS_SCRIPTS_DIR/startX.sh 2>/dev/null")

echo "Demarrage de la base"
sqlplus "/ as sysdba" <<EOF
startup
exit
EOF

echo "Demarrage du Listener de base"
lsnrctl start




Plus d'informations sur la liste de diffusion Ldl62