Ubuntu 18.04 服务器上的 mysql.service 位置?

Ubuntu 18.04 服务器上的 mysql.service 位置?

我需要编辑该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. 一些简单的谷歌搜索显示,这lxcfs是 Linux 容器的缩写,我应该更改其中的任何mysql.service文件吗?

答案1

文件位于/lib/systemd/系统管理员不应直接编辑,应保持原样。这些文件属于已安装的软件包,更新和/或更改可能会造成破坏。


要修改现有systemd文件和配置(如.service文件),systemd提供/etc/systemd/系统路径,它将覆盖在以下位置找到的文件和设置/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

相关内容