diff options
Diffstat (limited to 'abs/core/mysql/mysqld')
-rwxr-xr-x | abs/core/mysql/mysqld | 67 |
1 files changed, 31 insertions, 36 deletions
diff --git a/abs/core/mysql/mysqld b/abs/core/mysql/mysqld index 5857df8..1ac88a7 100755 --- a/abs/core/mysql/mysqld +++ b/abs/core/mysql/mysqld @@ -1,48 +1,35 @@ #!/bin/bash -MYSQLD_ROOT="/var/lib/mysql" -# source application-specific settings -[ -f /etc/conf.d/mysqld ] && . /etc/conf.d/mysqld - # general config . /etc/rc.conf . /etc/rc.d/functions -PID=`pidof -o %PPID /usr/sbin/mysqld` -if [ ! `egrep '^mysql:' /etc/group` ]; then - stat_busy "Adding mysql group" - groupadd -g 89 mysql - stat_done -fi -if [ ! `egrep '^mysql:' /etc/passwd` ]; then - stat_busy "Adding mysql user" - useradd -u 89 -g mysql -d $MYSQLD_ROOT -s /bin/false mysql - [ -d $MYSQLD_ROOT ] && chown -R mysql.mysql $MYSQLD_ROOT - stat_done -fi - -if [ ! -d $MYSQLD_ROOT ]; then - mkdir -p $MYSQLD_ROOT - /usr/bin/mysql_install_db --datadir=$MYSQLD_ROOT --user=mysql 2>/dev/null 1>/dev/null - chown -R mysql.mysql $MYSQLD_ROOT -fi +getPID() { + echo $(pgrep -u mysql mysqld 2>/dev/null); +} case "$1" in start) - stat_busy "Starting MySQL" - if [ -z "$PID" ]; then - /usr/bin/mysqld_safe --skip-name-resolve --datadir=$MYSQLD_ROOT >/dev/null 2>/dev/null & + stat_busy "Starting MySQL Server" + [ ! -d /var/run/mysqld ] && install -d -g mysql -o mysql /var/run/mysqld &>/dev/null + if [ -z "$(getPID)" ]; then + /usr/bin/mysqld_safe --user=mysql &>/dev/null & if [ $? -gt 0 ]; then stat_fail exit 1 else - sleep 1 # wait on children - PID=`pidof -o %PPID /usr/sbin/mysqld` - if [ -z "$PID" ]; then + timeo=30 + while [ $timeo -gt 0 ]; do + response=`/usr/bin/mysqladmin -uUNKNOWN_USER ping 2>&1` && break + echo "$response" | grep -q "mysqld is alive" && break + sleep 1 + let timeo=${timeo}-1 + done + if [ $timeo -eq 0 ]; then stat_fail exit 1 else - echo $PID >/var/run/mysqld.pid + echo $(getPID) > /var/run/mysqld/mysqld.pid add_daemon mysqld stat_done fi @@ -54,16 +41,25 @@ case "$1" in ;; stop) - stat_busy "Stopping MySQL" - if [ ! -z "$PID" ]; then - kill $PID &> /dev/null + stat_busy "Stopping MySQL Server" + if [ ! -z "$(getPID)" ]; then + timeo=30 + kill $(getPID) &> /dev/null if [ $? -gt 0 ]; then stat_fail exit 1 - else - rm -f /var/run/mysqld.pid &>/dev/null + fi + while [ ! -z "$(getPID)" -a $timeo -gt 0 ]; do + sleep 1 + let timeo=${timeo}-1 + done + if [ -z "$(getPID)" ]; then + rm -f /var/run/mysqld/mysqld.pid &>/dev/null rm_daemon mysqld stat_done + else + stat_fail + exit 1 fi else stat_fail @@ -73,10 +69,9 @@ case "$1" in restart) $0 stop - sleep 3 $0 start ;; *) - echo "usage: $0 {start|stop|restart}" + echo "usage: $0 {start|stop|restart}" esac exit 0 |