LINUX.ORG.RU
ФорумAdmin

CentOS4.7 Не могу автоматически остановить MySQL через init


0

1

Делаю:
ln -s /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/rc5.d/S100mysql.server - стартует ОК.
ln -s /usr/local/mysql/share/mysql/mysql.server /etc/rc.d/rc4.d/K100mysql.server - при переводе на 4 уровень не останавливает MySQL, хотя если ручками передать параметр stop, то все ОК:
/usr/local/mysql/share/mysql/mysql.server stop.

Такое ощущение, что не отрабатывает init /etc/rc.d/etc4.d/K100mysql.server

Если где то и что то не так понимаю, то пробую и экспериментирую на демоне sshd - результат положительный(и останавливает, и стартует). А вот MySQL не хочет останавливаться. Может что то в скрипте mysql.server править или /dev/hands?

P.s. Перевод на 4 уровень нужен тока для того, что бы прверить, что процесс автоматически завершается.


а почему бы не использовать для управления ранлевелом shkconfig? или ntsysv, если хочется гуя, например?

anonymous ()
Ответ на: комментарий от anonymous

chkonfig говорит, что на всех уровнях off. А MySQL при этом запущен.

stk2 ()
Ответ на: комментарий от stk2

а почему у скрипта такое странное имя? обычно он называется mysqld

anonymous ()
Ответ на: комментарий от anonymous

Да, MySQL собран из исходников, видимо система про этот сервис не знает.

stk2 ()
Ответ на: комментарий от stk2

такое ощущение, что скрипт нередхетоугодный. Надо взять скрипт из пакета от четверки и сравнить со своим. Либо выложить свой скрипт сюда, чтобы кто-нибудь, кому не лень сам его поковырял

anonymous ()
Ответ на: комментарий от anonymous

SE изначально не поднимал

P.s. Скрипт завтра ( вернее попозже, а то уже 04 утра :-). ) Прсто, чтоб вытянуть скрипт надо ftp поднять, а по ssh не умею файлы забирать.

stk2 ()

я что то не понимаю, как можно управлять сервисами создавая символические линки? В Centos все так весело? почему не использовать service mysqld start/stop.

splinter ★★★★★ ()

и кстати runlevel 4 где используется? я знаю про 0,1,2,3,5,6

splinter ★★★★★ ()
Ответ на: комментарий от splinter

Собрано из исходников, система про сервис ентот не знает. (см.выше)

stk2 ()
Ответ на: комментарий от stk2

>Собственно, что и нужно для init

Ну-ну :) Нормальный (редхатоугодный скрипт) должен понимать start|stop|status|condrestart|restart. А ещё он должен создавть правильный файл в /var/lock/subsys/. Именно по наличию этого файла принимается решение о том, что сервис запущен и его нужно останавливать.

Вот, например, ssh создаёт /var/lock/subsys/sshd, а ваш скрипт, создаёт либо /var/lock/subsys/mysqlmanager, либо /var/lock/subsys/mysql.

mky ★★★★★ ()
Ответ на: комментарий от splinter

Игрался и с 3. ОДНОФИГСТВЕННО. Мне 4 нужен просто для того, что бы убедиться, что MySQL останавливается. Просто при reboot тяжело узнать- как завершился процесс.

А кто мешает тебе 4 уровень использовать? Он такой же как и все ( по крайне мере я так понимаю). Бери - настраивай - пользуйся.

stk2 ()

А почему бы не использовать дистрибутивный mysql?

Deleted ()
Ответ на: комментарий от Deleted

он там старый небось, центось-то четвёртая. Хотя правильнее найти или собрать рпм-ку для дистра, если уж на то пошло

anonymous ()
Ответ на: комментарий от anonymous

1)mky: -создается файл /var/lock/sybsys/mysql. (не mysqld, не mysqld_safe). На сколько я правильно понимаю: создается процесс mysql. Среди списка запущенных процессов (ps) есть: mysqld_safe и mysqld. Я почему-то считал, что init запускает скрипты и передает им параметры S-start, K-stop. Или я не прав? Кстати, mysql.server вручную с этими параметрами и останавливается, и запускается.

2)Dimez: -если собирать rpm-ку, то я этим еще не занимался.Пока не знаю как. Да и вопрос: нужно ли? Собирать из исходников дистрибутив, а потом устанавливать... А почему из исходников не собрать и не установить, пропустив шаг сборки дистрибутива?

3)spliter: -вот /etc/inittab:
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
pf::powerfail:/sbin/shutdown -f -h +2 «Power Failure; System Shutting Down»

# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c «Power Restored; Shutdown Cancelled»


# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon

stk2 ()
Ответ на: комментарий от stk2

А вообще, я уже нашел решение, но корявое :-) :

Я сделал симлинк на файлик с одной строчкой:
mysql.server stop
и поместил его /rc.d как стартующий: S100mysql. Останов работает!

Согласитесь, что это не совсем «прямо».

stk2 ()
Ответ на: комментарий от stk2

собирать пакеты надо, чтобы не превращать гну/линукс в слаку

anonymous ()
Ответ на: комментарий от stk2

Было же ясно написано, как работает система init-скриптов в RH. Не знаю, зачем вы превращаете RPM-based в LFS, но уж тогда не требуйте, чтобы в нём всё работало.

Объясняю ещё раз, вот кусок из /etc/rc.d/rc:

 for i in /etc/rc$runlevel.d/K* ; do
        check_runlevel "$i" || continue

        # Check if the subsystem is already up.
        subsys=${i#/etc/rc$runlevel.d/K??}
        [ -f /var/lock/subsys/$subsys -o -f /var/lock/subsys/$subsys.init ] \
                || continue

        # Bring the subsystem down.
        if LC_ALL=C egrep -q "^..*init.d/functions" $i ; then
                $i stop
        else
                action $"Stopping $subsys: " $i stop
        fi
done 
Для каждого файла с буквы К (в вашем случае /etc/rc4.d/K100mysql.server) определяется (путём отбрасывания К и двух символов после) имя подсистемы. В вашем случае, так как вы додумались поставить 3 цифры, это имя будет 0mysql.server, после чего ищется файл в /var/lock/subsys/, в вашем случае ищутся файлы /var/lock/subsys/0mysql.server и /var/lock/subsys/0mysql.server.init. Так как таких файлов у вас нет, то скрипт с параметром «stop» не вызывается.

Создается файл /var/lock/sybsys/mysql

Не знаю, я смотрел mysql-5.0.77/support-files/mysql.server.sh, может у вас другой файл, но это не важно, имя процесса и файл в /var/lock/subsys не связаны. Например, для /etc/init.d/syslog создаётся файл /var/lock/subsys/syslog, а запускаются процессы syslogd и klogd.

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.