Probleme avec script bash [OK]

Statut
N'est pas ouverte pour d'autres réponses.

sebge2

Elite
Bonjour :)

dans le cadre de l'installation du serveur postgreSQL je suis amené à faire moi même le script bash qui permettra de lancer le daemon

c'est la première fois que je fais un script aussi compliquer et j'aimerais savoir comment faire pour afficher le [OK] en fonction d'un test que j'aurais fais moi meme ...

de plus j'ai une erreur avec la fonction daemon :
[root@serveur init.d]# ./postgresql stop
Shutting down postgreSQL: [ECHEC ]
alors qu'il est lancé

idem pour le lancement :
Code:
[root@serveur init.d]# ./postgresql start
Starting postgreSQL: postmaster starting
execvp: No such file or directory
                                                                [ECHEC ]
autre probleme il m'affiche lui meme le message "postmaster starting" comment l'omettre ?


voici mon script :
Code:
#!/bin/sh
# Script de lancement de postgresql

if [ -f /etc/init.d/functions ] ; then
    . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
    . /etc/rc.d/init.d/functions
else
    exit 0
fi

start(){
    echo -n "Starting postgreSQL: "
    if [ -f /var/lock/subsys/postmaster ]; then
        echo'' #daemon /usr/bin/script.r $([ "$DAEMON" =      no ] && echo -bd) \
    else
        touch /var/lock/subsys/postmaster
        /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >/usr/local/pgsql/logfile 2>&1 &
        su -c '/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -l /var/log/postgresql' postgres
    fi
    #echo -n "Starting postgreSQL: "
    daemon postmaster
    RETVAL=$?
    echo
    return $RETVAL
}

stop(){
    if [ -f /var/lock/subsys/postmaster ] ; then
        rm /var/lock/subsys/postmaster
    else echo 'postgreSQL is already dead'
    fi
    echo -n "Shutting down postgreSQL:      "
    killproc postmaster
    RETVAL=$?
    echo
    return $RETVAL
}

status(){
    echo "PostgreSQL: "
    if [ -f /var/lock/subsys/postmaster ]; then
         daemon /usr/bin/script.r $([ "$DAEMON" =      yes ])
    else
         daemon /usr/bin/script.r $([ "$DAEMON" =      no])
    fi
    RETVAL=$?
    echo
    return $RETVAL
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    *)
        echo "Usage: rebold {start|stop|status}"
esac

exit $?
merci d'avance :)

ps : tout lien ou document concernant bash m'interesse :wink: [/b]
 

Calvin80

Respect is key
sebge2 a dit:
de plus j'ai une erreur avec la fonction daemon :
[root@serveur init.d]# ./postgresql stop
Shutting down postgreSQL: [ECHEC ]
alors qu'il est lancé

i
je comprends pas ce que tu veux dire..c normal que si ton serveur est encore lancé, le shutdown ne s'est pas fait...
 

dagibbon

Elite
bizarre qu'il te mette l'erreur execvp: no such file or directory alors que tu l'utilise pas...

si tu starte juste le daemon ca passe?
c'est quelle distro?

Sinon sur le site de LFS tu trouves ceci:
linuxfromscratch.org a dit:
cat > /etc/rc.d/init.d/postgres << "EOF"

#!/bin/bash
# Début $rc_base/init.d/postgres

# Basé sur le script sysklogd de LFS-3.1 et précédent.
# Réécrit par Gerard Beekmans - gerard@linuxfromscratch.org

source /etc/sysconfig/rc
source $rc_functions

case "$1" in
start)
echo "Starting PostgreSQL daemon..."
su - postgres -c '/usr/bin/pg_ctl start -W -D /var/pgsql/data \
-l /var/pgsql/data/logfile -o "-i" '
evaluate_retval
;;

stop)
echo "Stopping PostgreSQL daemon..."
/usr/bin/pg_ctl stop -m smart -D /var/pgsql/data
evaluate_retval
;;

restart)
$0 stop
sleep 1
$0 start
;;

status)
/usr/bin/pg_ctl status -D /var/pgsql/data
;;

*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
;;
esac

# Fin $rc_base/init.d/
EOF
chmod 755 /etc/rc.d/init.d/postgres

Créez le lien symbolique de ce fichier dans le répertoire adéquat avec les commandes suivantes:

cd /etc/rc.d/init.d &&
ln -sf ../init.d/mysql ../rc0.d/K26postgres &&
ln -sf ../init.d/postgres ../rc1.d/K26postgres &&
ln -sf ../init.d/postgres ../rc2.d/K26postgres &&
ln -sf ../init.d/postgres ../rc3.d/S34postgres &&
ln -sf ../init.d/postgres ../rc4.d/S34postgres &&
ln -sf ../init.d/postgres ../rc5.d/S34postgres &&
ln -sf ../init.d/postgres ../rc6.d/K26postgres
peut etre les symlinks ou tes path ...

petite question par curiosité, pourquoi Postgresql?
 
1er
OP
sebge2

sebge2

Elite
merci :)

pour finir j'ai fais ceci qui fonctionne :

je suis tombé par hasard sur echo_failure et echo_success :)

je regarderai le lien demain :wink:

Code:
#!/bin/sh
# Script de lancement de postgresql

if [ -f /etc/init.d/functions ] ; then
    . /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ] ; then
    . /etc/rc.d/init.d/functions
else
    exit 0
fi

start(){
    echo -n "Starting postgreSQL: "
    if [ -f /var/lock/subsys/postmaster ]; then
        echo_failure
    else
        /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >/usr/local/pgsql/log/logfile 2>&1 &
        su -c '/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -l /usr/local/pgsql/log/logfile' postgres > /usr/local/pgsql/log/logfile
        if [ $$?=0 ] ; then
            echo_success
            touch /var/lock/subsys/postmaster
        else
            echo_failure
        fi
    fi
}

stop(){
    echo -n "Shutting down postgreSQL:      "
    if [ -f /var/lock/subsys/postmaster ] ; then
        killproc postmaster
        if [ $$?=0 ]; then
            rm /var/lock/subsys/postmaster
            echo_success
        else echo_failure
        fi
    else echo_failure
    fi
}

status(){
    echo -n "PostgreSQL: "
    if [ -f /var/lock/subsys/postmaster ]; then
         echo_success
    else
         echo_failure
    fi
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    status)
        status
        ;;
    restart)
        stop
        start
        ;;
    *)
        echo "Usage: postgreSQL {start|stop|status}"
esac

echo ""

exit $?
 

SkYlEsS

Elite
C'est quoi un serveur postgreSQL ? C'est quoi un script bash ? :) :oops:
 

FoX SpeEd

Touriste
SkYlEsS a dit:
C'est quoi un serveur postgreSQL ? C'est quoi un script bash ? :) :oops:
ben le serv postgreSQL c'est pas pour une base de donnée??
 
1er
OP
sebge2

sebge2

Elite
désolé je n'ai pas vu qu'il y avait des réponses :?


alors postgreSQL c'est un SGBD relationnelle (Serveur de Gestion de Base de Données) qui inclu en natif le SQL... c'est un vieux de la vieille (je pense) il date des années 80

un script bash c'est un script contenant des lignes commandes .... cfr. bash qui est l'interprétateur de commande sous Unix

en gros ca me permet de faire de la programmation système, en configurant le système avec mon script bash je peux administrer plus facilement l'ajout de ce nouveau service (postgreSQL)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut