OVH Cloud OVH Cloud

[FreeBSD 4.8] script de démarrage

5 réponses
Avatar
niin
Pourquoi est-ce que ce script de démarrage de mysql en version chrooté
ne fonctionne pas ?
Il se trouve dans /usr/local/etc/rc.d/ et a les droits 755.
En tapant la commande
# /usr/local/etc/rc.d/mysql.sh start
tout fonctionne. Idem pour le stop. Cependant lors d'un reboot, mysql
ne se lance jamais ! Franchement je planche un peu.

Voici le script de démarrage (issu d'un article sur
securityfocus.com):

#!/bin/sh

CHROOT_MYSQL=/home/chroot/mysql
CHROOT_PHP=/home/chroot/httpd
SOCKET=/tmp/mysql.sock
MYSQLD=/usr/local/mysql/libexec/mysqld
PIDFILE=/usr/local/mysql/var/`/bin/hostname -s`.pid
CHROOTUID=/usr/local/sbin/chrootuid

echo -n " mysql"

case "$1" in
start)
rm -rf ${CHROOT_PHP}/${SOCKET}
nohup ${CHROOTUID} ${CHROOT_MYSQL} mysql ${MYSQLD} >/dev/null
2>&1 &
sleep 5 && ln ${CHROOT_MYSQL}/${SOCKET}
${CHROOT_PHP}/${SOCKET}
;;
stop)
kill `cat ${CHROOT_MYSQL}/${PIDFILE}`
rm -rf ${CHROOT_MYSQL}/${SOCKET}
;;
*)
echo ""
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac

exit 0


Merci de votre aide.

5 réponses

Avatar
niin
Oui. tout est correct ! Les autres scripts dans rc.d se lancent
parfaitement. Une autre idée ?

Peut-être un problème avec chrootuid ?

Cordialement
Avatar
Guillaume Dondero
On 7 Sep 2003 11:09:05 -0700
(NIIN) wrote:

Pourquoi est-ce que ce script de démarrage de mysql en version chrooté
ne fonctionne pas ?
Il se trouve dans /usr/local/etc/rc.d/ et a les droits 755.
En tapant la commande
# /usr/local/etc/rc.d/mysql.sh start
tout fonctionne. Idem pour le stop. Cependant lors d'un reboot, mysql
ne se lance jamais ! Franchement je planche un peu.


Tout simplement, parcequ'au démarrage du système le script n'est pas ex ecuté avec tout l'envirronnement que tu peux avoir quand tu le lance à la main .. Ainsi en remplaçant rm par /bin/rm , etc, ça devrait fonctio nner ..

Cordialement,

Guillaume

Avatar
Marc
NIIN wrote:

Pourquoi est-ce que ce script de démarrage de mysql en version
chrooté ne fonctionne pas ?
Il se trouve dans /usr/local/etc/rc.d/ et a les droits 755.
En tapant la commande
# /usr/local/etc/rc.d/mysql.sh start
tout fonctionne. Idem pour le stop. Cependant lors d'un reboot,
mysql ne se lance jamais ! Franchement je planche un peu.

Voici le script de démarrage (issu d'un article sur
securityfocus.com):

#!/bin/sh

CHROOT_MYSQL=/home/chroot/mysql
CHROOT_PHP=/home/chroot/httpd
SOCKET=/tmp/mysql.sock
MYSQLD=/usr/local/mysql/libexec/mysqld
PIDFILE=/usr/local/mysql/var/`/bin/hostname -s`.pid
CHROOTUID=/usr/local/sbin/chrootuid

echo -n " mysql"

case "$1" in
start)
rm -rf ${CHROOT_PHP}/${SOCKET}
nohup ${CHROOTUID} ${CHROOT_MYSQL} mysql ${MYSQLD}
/dev/null
2>&1 &

sleep 5 && ln ${CHROOT_MYSQL}/${SOCKET}
${CHROOT_PHP}/${SOCKET}
;;
stop)
kill `cat ${CHROOT_MYSQL}/${PIDFILE}`
rm -rf ${CHROOT_MYSQL}/${SOCKET}
;;
*)
echo ""
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac

exit 0


Merci de votre aide.


Est-tu certain de la path de l'exécutable parce que je constate
qu'elle diffère avec l'installation par défaut. Dans mon cas
/usr/local/bin/mysqld_safe
J'ai la version mysql-server-4.0.10 sur FreeBSD4.8R et voici le script
de démarrage dans /usr/local/etc/rc.d
J'espère que cela t'aidera


#!/bin/sh

DB_DIR=/var/db/mysql
PIDFILE=${DB_DIR}/`/bin/hostname -s`.pid

case "$1" in
start)
if [ -x /usr/local/bin/mysqld_safe ]; then
/usr/bin/limits -U mysql
/usr/local/bin/mysqld_safe --user=mysql --datadir=${DB_DIR}
--pid-file=${PIDFILE} > /dev/null &
echo -n ' mysqld'
fi
;;
stop)
if [ -f ${PIDFILE} ]; then
/bin/kill `cat ${PIDFILE}` > /dev/null 2>&1 && echo -n ' mysqld'
else
echo "mysql-server isn't running"
fi
;;
*)
echo ""
echo "Usage: `basename $0` { start | stop }"
echo ""
exit 64
;;
esac

Cordialement
Marc Dierick


Avatar
niin
Est-tu certain de la path de l'exécutable parce que je constate
qu'elle diffère avec l'installation par défaut. Dans mon cas
/usr/local/bin/mysqld_safe


Ce n'est pas une installation par défaut ... et comme je l'ai dit, en
exécutant /usr/local/etc/rc.d/mysql.sh start tout fonctionne.

J'ai mis tous les binaires avec un PATH absolu (ex : /bin/rm), mais
rien ne change. Le seul message dans mes logs :

Sep 8 12:36:28 www /usr/local/sbin/chrootuid[151]: chrootuid:
dir(/home/chr
ql) user(mysql) command(/usr/local/mysql/libexec/mysqld)


Une autre idée ?

Avatar
Marc
NIIN wrote:

Est-tu certain de la path de l'exécutable parce que je constate
qu'elle diffère avec l'installation par défaut. Dans mon cas
/usr/local/bin/mysqld_safe


Ce n'est pas une installation par défaut ... et comme je l'ai dit,
en exécutant /usr/local/etc/rc.d/mysql.sh start tout fonctionne.

J'ai mis tous les binaires avec un PATH absolu (ex : /bin/rm), mais
rien ne change. Le seul message dans mes logs :

Sep 8 12:36:28 www /usr/local/sbin/chrootuid[151]: chrootuid:
dir(/home/chr
ql) user(mysql) command(/usr/local/mysql/libexec/mysqld)


Une autre idée ?



As-tu un message genre que le script n'est pas un exécutable lors du
lancement des applications locales au boot?
Si non. As tu modifié la directive local_startup?