Passing Arguments to a Service started with Init.d

Solution 1:

To make it simple you can create another entry in init.d to start the mysql with that logdir path option. Make a script like /etc/init.d/mysql-log and put following entries in it:

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

Set the log file location in the above script as per your needs and start the mysql with the following command:

/etc/init.d/mysql-log start 

This way you can use different scripts for different occasions.

Solution 2:

You cannot pass arguments to services with startup scripting. Reason: there should be ONLY ONE argument being passed.

This argument consists of minimally only TWO choices:

 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

Trying to configure a system to pass arguments at boot time will make your system non-standard and the cause of later configuration errors.

Usually this type of adjustment is handled in the init.d scripting by setting up variables using the /etc/sysconfig/servicename scripting and using the '.' command to basically include them in their operation.

In otherwords, the most common process is to basically configuration files that are read-in or used by the underlying application in an init.d startup scripting. Definitely this is NOT done via adding more arguments to this type of scripting.