На машине centos установлен mysql.
Я пытаюсь изменить служебный файл mysql, чтобы включить новую строку «RequiresMountsFor = / mnt / mysqldata», чтобы убедиться, что диск, на котором находятся данные mysql, смонтирован до запуска сервера mysql.
Но я заметил, что есть два файла mysql.service. Один с @, а другой без него.
[user@machine system]$ pwd
/usr/lib/systemd/system
[user@machine system]$ ls -l mysqld*
-rw-r--r--. 1 root root 1614 mar 18 2017 mysqld.service
-rw-r--r--. 1 root root 1645 mar 18 2017 mysqld@.service
Я не знаю, в чем разница между ними, какой из них используется и почему их два.
Их содержание практически одинаково.
[user@machine system]$ diff mysqld.service mysqld@.service
1c1
< # Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
---
> # Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
35c35
< PIDFile=/var/run/mysqld/mysqld.pid
---
> PIDFile=/var/run/mysqld/mysqld-%i.pid
44c44
< ExecStartPre=/usr/bin/mysqld_pre_systemd
---
> ExecStartPre=/usr/bin/mysqld_pre_systemd %I
47c47
< ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS
---
> ExecStart=/usr/sbin/mysqld --defaults-group-suffix=@%I --daemonize --pid-file=/var/run/mysqld/mysqld-%i.pid $MYSQLD_OPTS
Статус устройства подсказывает мне, что используется устройство без @. Но мне все еще интересно, почему их два и их значение.
[user@machine system]$ systemctl status mysqld.service
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since jue 2017-09-21 09:57:05 CEST; 1h 40min ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 1042 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 950 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
Main PID: 1357 (mysqld)
CGroup: /system.slice/mysqld.service
└─1357 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
sep 21 09:57:00 machine systemd[1]: Starting MySQL Server...
sep 21 09:57:05 machine systemd[1]: Started MySQL Server.
Так что @
имеет особое значение в systemd.
Скажем, у нас есть служба под названием echo@.service
со следующим в нем
ExecStart=/bin/echo %i
Так что если я сделаю
systemctl start echo@1.service
Я бы получил 1
в journalctl
.
Так %i
в служебном файле заменяется чем-либо после @
при запуске службы.
Так что, похоже, в вашем случае mysqld@.service
было бы, если бы вы хотели запустить несколько серверов mysql на одном хосте.