Передача аргументов службе, запущенной с Init.d
Я хочу запустить mysql с аргументом команды "--log=log_file_name"
Как правильно сделать это при запуске с /etc/init.d?
Будет ли это так? /etc/init.d/mysql start --log=log_file_name
2 ответа
Для простоты вы можете создать еще одну запись в 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. Определенно это НЕ делается путем добавления большего количества аргументов в этот тип сценариев.