将参数传递给使用 Init.d 启动的服务

将参数传递给使用 Init.d 启动的服务

我想使用命令参数“--log = log_file_name”启动mysql

当使用 /etc/init.d 启动时,正确的方法是什么?

是不是这样?/etc/init.d/mysql start --log=log_file_name

答案1

为了简单起见,您可以在 init.d 中创建另一个条目,以使用该 logdir 路径选项启动 mysql。创建一个脚本,/etc/init.d/mysql-log并将以下条目放入其中:

 #!/bin/sh -e
 set -e
 COMMAND=$1
 LOG="--log=/tmp/mysql.log"
 case $COMMAND in
 start)
      /etc/init.d/mysql $COMMAND $LOG
      ;;
 stop)
      /etc/init.d/mysql $COMMAND
      ;;
 restart)
      /etc/init.d/mysql stop
      /etc/init.d/mysql start $LOG
      ;;
 *)
      exit 1
 esac

根据需要在上述脚本中设置日志文件位置,然后使用以下命令启动 mysql:

/etc/init.d/mysql-log start 

这样,您就可以针对不同的场合使用不同的脚本。

答案2

您无法使用启动脚本向服务传递参数。原因:只能传递一个参数。

这个论点至少只包含两个选择:

 start     -- tells the scripting that it is being started from system startup.
 stop      -- tells the scripting that it is being STOPPED due to shutdown request

尝试配置系统以在启动时传递参数将使您的系统变得不标准,并导致以后的配置错误。

通常,这种类型的调整是在 init.d 脚本中处理的,通过使用 /etc/sysconfig/ 脚本设置变量servicename并使用 '.' 命令将它们基本上包含在其操作中。

换句话说,最常见的过程基本上是将底层应用程序读取或使用的配置文件写入 init.d 启动脚本中。这绝对不是通过向此类脚本添加更多参数来实现的。

相关内容