Мне нужно отредактировать 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
вероятно, файл, который мне следует отредактировать. Однако, если бы кто-нибудь мог предоставить дополнительную информацию по следующим вопросам, это было бы здорово:
Является /lib/systemd/system/mysql.service
файл, который я должен редактировать?
Почему так много mysql.service
файлы? Кажется, это вызывает недоумение.
Что multi-user.target.wants
? Должен ли я изменить mysql.service
файл там тоже?
Простой поиск в 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