Назад | Перейти на главную страницу

Нужна помощь по сценарию запуска Unix

Я очень плохо разбираюсь в сценариях оболочки Unix. Есть ли способ создать сценарий оболочки Unix, который запускается только во время загрузки сервера, и выполнит следующие команды по порядку:

# cd /mysql
# ./bin/safe_mysqld --user=root &
# ./support-files/mysql.server start

Более длинная история ... На сервере HP-UX я установил Mysql. Однако клиент хотел, чтобы сервер был установлен в /mysql вместо этого в /usr/local/mysql/ стандартное расположение. В течение последней недели я изо всех сил пытался настроить демон mysql на автоматический запуск во время загрузки сервера.

Я не знаю, в чем проблема, но пока единственный способ запустить сервер - это использовать указанные выше команды.


ОБНОВЛЕНИЕ: 07.02.12 15:23

Это краткий результат загрузки сервера при запуске процессов:

Start MySQL Server .................................................. OK
...

Однако после того, как я войду ps -ef Я легко могу сказать, что он не запускается:

# ps -ef | grep -i mysql
    root  3074  3056  0 15:26:53 pts/0     0:00 grep -i mysql
#

И вот как это должно выглядеть, когда я начинаю процесс:

# cd mysql
# ./bin/safe_mysqld --user=root &
[1]     3123
# Starting mysqld daemon with databases from /mysql/data
#
# ./support-files/mysql.server start
Starting MySQL
 SUCCESS!
#
# ps -ef | grep -i mysql
    root  3139  3123  0 15:27:19 pts/0     0:00 /mysql/bin/mysqld --basedir=/mysql --datadir=/mysql/data --u
    root  3123  3056  0 15:27:19 pts/0     0:00 /bin/sh ./bin/safe_mysqld --user=root
    root  3171  3056  0 15:27:59 pts/0     0:00 grep -i mysql
#

Теперь я думаю, что стало более понятно, почему я хочу создать сценарий запуска оболочки и фактически ПРИНУДИТЕЛЬНО запуск процесса с этими командами.

Двоичный файл должен знать расположение файла my.cnf при запуске (по умолчанию будет скомпилировано). Вы не сказали, какой префикс пути вы использовали при сборке mysql. В свою очередь, файл my.cnf определяет расположение файлов данных.

Было бы неплохо использовать подходящий сценарий инициализации SysV для управления сервером. Помимо решения проблемы запуска сервера при загрузке, вы также получите полное завершение работы при остановке системы, вы можете настроить разумное поведение для разных уровней запуска и останавливать / запускать только сервер mysql управляемым способом. И если вы настроите его правильно, он будет хорошо работать с SAM.

Есть пример здесь (обратите внимание, что местоположение my.cnf передается в качестве аргумента safe_mysqld). Он должен находиться в /sbin/init.d с соответствующими (символическими) ссылками в /sbin/rcX.d (где X - соответствующий уровень выполнения). Процесс описан здесь.

Я думаю, что самое чистое, если это вам подходит, - это перекомпилировать MySQL.

В исходном каталоге (извлечение из архива):

./configure --prefix=/mysql
make && sudo make install