需要 Unix 启动脚本的帮助

需要 Unix 启动脚本的帮助

我对 unix shell 脚本非常不熟悉。有没有办法创建 unix shell 脚本,仅在服务器启动时启动,并将按顺序执行以下命令:

# 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
#

现在我认为我更清楚为什么要创建一个 shell 启动脚本,实际上是强制启动该进程使用这些命令。

答案1

二进制文件需要在启动时知道 my.cnf 文件的位置(将编译一个默认值)。您没有说明在构建 mysql 时使用了什么路径前缀。反过来,my.cnf 文件定义了数据文件的位置。

使用适当的 SysV init 脚本来管理服务器是个好主意。除了解决在启动时启动服务器的问题之外,您还可以在系统停止时获得干净的关机,您可以为不同的运行级别配置合理的行为,并以受控的方式单独停止/启动 mysql 服务器。如果您正确设置它,它将与 SAM 很好地配合。

这里有一个例子(请注意,my.cnf 的位置作为参数传递给 safe_mysqld)。这应该在 /sbin/init.d 中,并在 /sbin/rcX.d 中有相应的(符号)链接(其中 X 是相关的运行级别)。该过程描述如下

答案2

我认为最干净的事情(如果这对您来说是一个选择)是重新编译 MySQL。

在源目录(从 tarball 中提取):

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

相关内容