我需要编辑该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
其中的文件吗?一些简单的谷歌搜索显示,这
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