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

Расположение mysql.service на сервере Ubuntu 18.04?

Мне нужно отредактировать mysql.service файл, чтобы MySQL автоматически перезапускался при сбое. Я работаю с установкой почти стандартного сервера Ubuntu 18.04 и следую этим инструкциям. https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-18-04 для почти стандартной установки MySQL.

Меня беспокоит, что я не знаю, где редактировать mysql.service. Если я сделаю это:

sudo updatedb
locate mysql.service

Я получаю это:

/etc/systemd/system/multi-user.target.wants/mysql.service
/lib/systemd/system/mysql.service
/var/lib/lxcfs/cgroup/blkio/system.slice/mysql.service
/var/lib/lxcfs/cgroup/cpu,cpuacct/system.slice/mysql.service
/var/lib/lxcfs/cgroup/devices/system.slice/mysql.service
/var/lib/lxcfs/cgroup/memory/system.slice/mysql.service
/var/lib/lxcfs/cgroup/name=systemd/system.slice/mysql.service
/var/lib/lxcfs/cgroup/pids/system.slice/mysql.service
/var/lib/systemd/deb-systemd-helper-enabled/mysql.service.dsh-also
/var/lib/systemd/deb-systemd-helper-enabled/multi-user.target.wants/mysql.service

Это странно, потому что я привык к systemd .service файлы, находящиеся в /etc/systemd/system. Поскольку путь похож, я склонен предположить, что /lib/systemd/system/mysql.service вероятно, файл, который мне следует отредактировать. Однако, если бы кто-нибудь мог предоставить дополнительную информацию по следующим вопросам, это было бы здорово:

  1. Является /lib/systemd/system/mysql.service файл, который я должен редактировать?

  2. Почему так много mysql.service файлы? Кажется, это вызывает недоумение.

  3. Что multi-user.target.wants ? Должен ли я изменить mysql.service файл там тоже?

  4. Простой поиск в Google показывает, что lxcfs - сокращение от Linux Containers, следует ли мне изменить какой-либо из mysql.service файлы там?

Файлы в / lib / systemd / система не должны редактироваться администратором напрямую и должны быть оставлены как есть. Эти файлы принадлежат установленному пакету, и обновления и / или изменения могут что-то сломать.


Чтобы изменить существующие systemd файлы и конфигурация, такие как .service файлы, systemd предоставляет / и т.д. / systemd / system путь, который отменяет файлы и настройки, найденные в / lib / systemd / система.
Итак, если вы, например, есть два .service файлы следующим образом,

/etc/systemd/system/mysql.service
/lib/systemd/system/mysql.service

тот, расположенный в /etc/systemd/system/mysql.service будет использоваться при вводе таких команд, как systemctl [start|stop|enable|disable] mysql.service.


Дополнительно, systemd обеспечивает вставные каталоги ".d" что позволяет просто изменить или добавить одну опцию .service файл в / lib / systemd / система. Ты можешь использовать systemctl edit mysql.service чтобы создать такой дроп-ин .d каталог.
Все, что вам нужно будет ввести, это раздел (например, [Service], [Unit], ...) и параметр, который нужно изменить.
Поскольку вы хотите изменить поведение при перезапуске, выполните systemctl edit mysql.service и введите следующие строки.

[Service]
Restart=on-failure

Это создаст папку

/etc/systemd/system/mysql.service.d

и файл переопределения

/etc/systemd/system/mysql.service.d/override.conf

который содержит строки, которые вы ввели ранее. Вы также можете вручную создавать файлы и папки.

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


В любом случае при работе с systemd и вносить изменения в файлы конфигурации, нужно ввести

systemctl daemon-reload 

чтобы активировать изменения.


Больше ничего не меняйте, как lxcfs связанные вещи. В multi-user.target.wants это просто организационный метод systemd сгруппировать услуги, которые должны быть запущены для multi-user цель. Цели в systemd заменяет старый init 0 1 2 3 4 5 6 метод.
Некоторые из двойных mysql.service файлы, будут символическими ссылками, указывающими на ваш фактический .service файл.


См. Также следующие руководства.

man systemctl
man systemd.unit
man systemd.service
man systemd.target