Есть несколько способов сделать это:
Редактировать autofs.service
По своему дизайну сервисные файлы должны обслуживаться сайтом. На платформах на основе Debian файлы сервисов, предоставляемых вендором, находятся в /lib/systemd/system/
, я думаю, что у redhat они есть в /usr/lib/systemd/system/
, но вы можете переопределить их с файлами сервисов, управляемых сайтом, в /etc/systemd/system/
.
В этом случае я бы
cp /lib/systemd/system/autofs.service /etc/systemd/system/autofs.service
Затем в разделе [Service]
я бы добавил:
ExecStartPre=/backup/sw/bmount before
ExecStartPost=/backup/sw/bmount after
На странице управления systemd.service
написано :
ExecStart = команды выполняются только после успешного завершения всех команд ExecStartPre =.
ExecStartPost = команды выполняются только после успешного вызова команд, указанных в ExecStart =, как определено по типу = (т. е. процесс был запущен для типа = простой или тип = бездействующий, последний процесс ExecStart = успешно завершен для типа = однократный выстрел, ...).
Параметры службы вставки
Более элегантный способ сделать то же самое, что и выше, это использовать раскрывающийся список. Просто создайте /etc/systemd/system/autofs.service.d/backup.conf
с этим содержимым:
[Service]
ExecStartPre=/backup/sw/bmount before
ExecStartPost=/backup/sw/bmount after
Отношения
Может быть, autofs.service
уже имеет команды ExecStartPre
и ExecStartPost
, и вы беспокоитесь о возможности вмешательства в эту службу. В этом случае вы можете использовать отношения для запуска / остановки ваших услуг.
[Unit]
Description=Backup mount
PartOf=autofs.service
Before=autofs.service
[Service]
Type=oneshot
ExecStart=/backup/sw/bmount before
[Install]
WantedBy=autofs.service
и
[Unit]
Description=Backup mount
PartOf=autofs.service
After=autofs.service
[Service]
Type=oneshot
ExecStart=/backup/sw/bmount after
[Install]
WantedBy=autofs.service
В этом случае:
PartOf=autofs.service
означает «Когда systemd останавливается или перезапускается autofs.service
, действие распространяется на backup.service
» Before=autofs.service
означает «Если оба модуля запускаются, запуск autofs.service
задерживается до backup.service
запуск завершен. " After=autofs.service
означает" Если оба блока запускаются, запуск backup.service
задерживается до завершения autofs.service
. " WantedBy=autofs.service
означает "backup.service
будет запущено, если autofs.service
будет". Type=oneshot
означает, что служба будет по-прежнему считаться работающей, даже после завершения процесса ExecStart=
.
Обязательно запустите systemctl daemon-reload
, чтобы systemd прочитал новый служба. Также запустите systemctl enable backup.service
, чтобы WantedBy=
стал Wants=
для autofs.service
.
Я думаю, вы были довольно близки с вашим решением.