mysql.service的systemd脚本在哪里?

我实际上使用MariaDB(对于MySQL的替代品)。

我试图对我的systemd mysql.service文件进行一些更改。

我可以看到它存在,因为运行sudo systemctl列出它,并指出它已加载/活动/正在运行。

问题是我找不到要编辑的文件。 从我读过的各种文章中,我发现文档应该位于

/etc/systemd/system/multi-user.target.wants/mysql.service

但事实并非如此。 我浏览了/ etc / systemd级别的其他目录无济于事。 有任何想法吗?

systemd初始化脚本的默认位置是:

 /lib/systemd/system 

但修改它们的首选方法是在以下位置创build一个自定义脚本:

 /etc/systemd/system 

后者文件夹中的脚本将覆盖以前位置中的脚本。

对于在静态文件中定义的单位,您可以使用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

我希望有帮助;)

在你的特殊情况下,这可能是因为MySQL没有systemd服务文件,而只是/etc/init.d/mysql一个SystemV init脚本。 你必须使用systemctlservice来控制它。 运行/etc/init.d/mysql stop让systemd认为它崩溃并重新启动它。

不知道是否更新的Ubuntu也这样做,但肯定是老的。

我使用Ubuntu 16.04! 在修改/etc/security/limit.conf和/etc/mysql/my.cnf之后,运行
sudo systemctl edit mysql.service

添加以下行

[Service]
LimitNOFILE=infinity

更一般地说,要通过名称查找文件,可以使用以下方法之一:

  • find / -iname "<filename>"
  • updatedb && locate <filename>

systemd

根据maria.db站点上systemd的官方文档,maria.db服务的configuration文件存储在这里:

 /usr/lib/systemd/system/mariadb.service 

systemd快速信息:

systemd是MariaDB从10.1.8开始使用的init替代品。 此版本之前的分发包可能会使用不同的configuration,因此如果需要请参阅其文档。

…和configuration文件,我们有:

服务定义安装在/usr/lib/systemd/system/mariadb.service中。 服务名称是mariadb.service; 但为了方便起见,还包括了mysql.service和mysqld.service的别名。

如果您的安装使用自定义的configuration文件来启动maria.db服务,那么您可能会在以下位置find该脚本:

 /etc/systemd/system/mariadb.service.d/XXXX.conf 

其中XXXX可以是任何文件名!

这可能是因为在上述链接中提出的build议:

如果有一些系统设置可以覆盖或设置,则创build一个文件/etc/systemd/system/mariadb.service.d/XXXX.conf文件,其中XXXX对您来说是有意义的,并将configuration选项放在适当的位置部分,通常是[Service]。 如果systemd选项是一个列表,您可能需要将其设置为空,然后再设置replace值….

在对在线文章的反馈中,有一个简短的评论指出:

MariaDB 10.1.17和其他最新版本还包括一个初始化脚本以及一个systemd单元。 初始化脚本附带了chkconfig,这导致了一个争用条件,首先启动哪个版本的守护进程。 这会导致我们在RPM更新和系统重启时遇到重大问题。

这使我得出的结论是,您可能仍然需要searchconfiguration文件的init.d变体(正如我在本文的初始版本中指出的那样)以查明您的问题。

init.d中

我会检查目录/etc/init.d是否存在mysql或mariadb文件。

 ls /etc/init.d -lash 

如果你打开相应的文件(例如Ubuntu服务器上的mysql),你可以find启动部分。

 cat /etc/init.d/mysql 

(注意:没有mysqld文件,只是一个普通的mysql文件)

在某些时候,您会在服务启动脚本中find完整性检查:

 ## 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文件。 然后从那里出发。

您的configuration可能不同,但具备这些知识,您应该能够find您的服务的configuration文件。