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

Передача аргументов службе, запущенной с Init.d

Я хочу запустить mysql с аргументом команды "--log = log_file_name"

Как правильно это сделать при запуске с /etc/init.d?

Было бы так? /etc/init.d/mysql start --log = имя_файла_журнала

Чтобы упростить задачу, вы можете создать еще одну запись в init.d, чтобы запустить mysql с этим параметром пути logdir. Сделайте сценарий вроде /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 

Таким образом, вы можете использовать разные сценарии для разных случаев.

Вы не можете передавать аргументы службам с помощью сценариев запуска. Причина: должен быть передан ТОЛЬКО ОДИН аргумент.

Этот аргумент состоит как минимум из ДВУХ вариантов:

 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. Определенно, это НЕ делается путем добавления дополнительных аргументов к этому типу сценариев.