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

Где находится сценарий systemd для mysql.service?

На самом деле я использую MariaDB (замену MySQL).

Я пытаюсь внести некоторые изменения в свой файл systemd mysql.service.

Я вижу, что он существует, потому что запущенный sudo systemctl перечисляет его и указывает, что он загружен / активен / запущен.

Проблема в том, что я не могу найти файл для редактирования. Из того, что я читал в различных статьях, я обнаружил, что документ должен находиться по адресу

/etc/systemd/system/multi-user.target.wants/mysql.service

Но это не так. Я просмотрел другие каталоги на уровне / etc / systemd безрезультатно. Любые идеи?

Для единиц, определенных в статических файлах, вы можете использовать systemctl status, когда информация будет выведена с помощью этой команды, вы сможете увидеть его местоположение.

Например:

# systemctl  status sshd
● sshd.service - OpenSSH Daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2016-10-31 17:01:01 UTC; 1 weeks 0 days ago
 Main PID: 283 (sshd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/sshd.service
           └─290 /usr/bin/sshd -D

Обратите внимание, что здесь может быть полезна команда tab.

Поэтому в моей системе службы systemd помещены в /usr/lib/systemd/. Обратите внимание, что в этом месте могут быть папки.

Другой способ - использовать find команда в этом конкретном месте, чтобы найти службу:

# find /usr/lib/systemd/ | grep -i mysql

Надеюсь, это поможет ;)

Расположение по умолчанию для сценария инициализации systemd:

/lib/systemd/system

Но предпочтительный способ изменить их - создать собственный сценарий в:

/etc/systemd/system

сценарии в последней папке переопределяют сценарий в первой папке.

В вашем конкретном случае это, вероятно, связано с тем, что MySQL не имеет файла службы systemd, а только сценарий инициализации SystemV в /etc/init.d/mysql. Вы должны использовать systemctl или service хотя бы контролировать это. Бег /etc/init.d/mysql stop заставляет systemd думать, что он разбился, и перезапускает его.

Не уверен, что и более новые Ubuntu делают это, но более старые определенно.

Пользуюсь ubuntu 16.04! после изменения /etc/security/limits.conf и /etc/mysql/my.cnf, затем запустите
sudo systemctl edit mysql.service

добавление следующих строк

[Service]
LimitNOFILE=infinity

В более общем смысле, чтобы найти файл по его имени, вы можете использовать один из следующих подходов:

  • find / -iname "<filename>"
  • updatedb && locate <filename>

systemd

Согласно официальной документации для systemd на сайте maria.db файлы конфигурации для сервиса maria.db хранятся здесь:

/usr/lib/systemd/system/mariadb.service

Краткая информация о systemd:

systemd - это замена init, которую MariaDB использует в выпусках, начиная с 10.1.8. Пакеты распространения до этой версии могут использовать другую конфигурацию, поэтому при необходимости обратитесь к их документации.

... а для файла конфигурации у нас есть:

Определение службы установлено в /usr/lib/systemd/system/mariadb.service. Имя службы - mariadb.service; однако для удобства включены псевдонимы для mysql.service и mysqld.service.

Если в вашей установке используется настроенный файл конфигурации для запуска службы maria.db, вы можете найти сценарий в этом месте:

/etc/systemd/system/mariadb.service.d/XXXX.conf

Где XXXX может быть любым именем файла!

Это могло быть из-за рекомендации, сделанной в вышеупомянутом ссылка на сайт:

Если есть какие-то настройки systemd, которые нужно переопределить или установить, создайте файл /etc/systemd/system/mariadb.service.d/XXXX.conf, где XXXX - это что-то значимое для вас, и поместите параметры конфигурации в соответствующий раздел, обычно [Сервис]. Если опция systemd представляет собой список, вам может потребоваться установить его пустым перед установкой значений замены ....

В отзыве к онлайн-статье есть небольшой комментарий, в котором указывается, что:

MariaDB 10.1.17 и другие недавние выпуски по-прежнему включают сценарий инициализации, а также модуль systemd. Сценарий инициализации поставляется с включенной функцией chkconfig, и это вызывает состояние гонки относительно того, какая версия демона запускается первой. Это вызывает у нас серьезные проблемы с обновлениями RPM и перезагрузкой системы.

Это приводит меня к выводу, что вам, возможно, все равно придется искать варианты init.d файлов конфигурации (как указано в моей первоначальной версии этого сообщения), чтобы выявить ваши проблемы.

init.d

Я бы проверил каталог /etc/init.d на наличие файла mysql или mariadb.

ls /etc/init.d -lash

Если вы затем откроете соответствующий файл (например, mysql на моем сервере Ubuntu), вы сможете найти часть запуска.

cat /etc/init.d/mysql

(примечание: нет файла mysqld, просто файл mysql)

В какой-то момент вы обнаружите проверки работоспособности в сценарии запуска службы:

## Do some sanity checks before even trying to start mysqld.
sanity_checks() {
  # check for config file
  if [ ! -r /etc/mysql/my.cnf ]; then
    log_warning_msg "$0: WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz"
    echo                "WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz" | $ERR_LOGGER
  fi

Таким образом, фактическим файлом для моей установки будет файл /etc/mysql/my.cnf. Тогда иди оттуда.

Ваша конфигурация может отличаться, но, обладая этими знаниями, вы сможете найти файл конфигурации для своей службы.

Вот как я нашел на своем Ubuntu 16

#list all timer
systemctl list-timers #--> got apt-daily.service

#locate where is systemd 
sudo find / -name apt-daily.service
> /lib/systemd/system/apt-daily.service #--> /lib/systemd/system/

В Ubuntu вы можете найти его по адресу

/lib/systemd/system/mysql.service

Однажды я попытался запустить команду systemctl enable mysql.service, но обнаружил, что она ищет файл в / etc / systemd / system / (где обычно есть жесткая ссылка на него), а в моем случае не было mysql.service файл там. Итак, я создал жесткую ссылку:

ln -T /lib/systemd/system/mysql.service /etc/systemd/system/mysql.service