На самом деле я использую 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 на сайте 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 файлов конфигурации (как указано в моей первоначальной версии этого сообщения), чтобы выявить ваши проблемы.
Я бы проверил каталог /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