LINUX.ORG.RU
решено ФорумAdmin

Добавить ExecStartPre в существующий systemd-юнит

 


0

1

Задача такая. Есть сервер mariadb, в конфигурации которого я изменил путь к файлу unix-сокета, теперь это /run/mysqld/mysqld.sock Однако каталог run очищается при перезагрузке системы, поэтому запуск mariadb будет фейлиться. Нужно сделать так, чтобы перед запуском mariadb создавался каталог /run/mysqld, я хотел решить задачу правкой юнита mariadb.service, содержимое юнита такое:

[Unit]
Description=MariaDB 10.3 database server
Documentation=man:mysqld(8)
Documentation=https://mariadb.com/kb/en/library/systemd/
After=network.target

[Install]
WantedBy=multi-user.target
Alias=mysql.service
Alias=mysqld.service

[Service]
Type=notify
User=mysql
Group=mysql
ExecStartPre=/usr/libexec/mysql-check-socket
ExecStartPre=/usr/libexec/mysql-prepare-db-dir %n
ExecStart=/usr/libexec/mysqld --basedir=/usr $MYSQLD_OPTS $_WSREP_NEW_CLUSTER
ExecStartPost=/usr/libexec/mysql-check-upgrade
PrivateNetwork=false
KillMode=process
KillSignal=SIGTERM
SendSIGKILL=no
Restart=on-abort
RestartSec=5s
UMask=007
TimeoutSec=300
PrivateTmp=True
Мне стало быть надо добавить параметр ExecStartPre, содержащий команду по созданию каталога. Я правильно понимаю, что для этого я создаю файл /etc/systemd/system/mariadb.service.d/params.conf с секцией [Service], содержащие параметры, которые должны перекрыть параметры оригинального /usr/lib/systemd/system/mariadb.service никак правда не соображу, что в него вписать нужно.

★★★★★

Ну так и писать:

[Service]
ExecStartPre=.....
Oleg_Iu
()

Вообще создание директорий обычно делается через systemd-tmpfiles:

echo "d /run/mysqld 0755 mysql mysql" > /etc/tmpfiles.d/mariadb.conf
Ivan_qrt ★★★★★
()

удачи следующему админу такого сервака…

anonymous
()
Ответ на: комментарий от sunny1983

Для создания директории в /run лучше всё таки в сервисе прописать RuntimeDirectory. Но такая директория удаляется после завершения работы сервиса.

eternal_sorrow ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.