1

Я просто хочу поделиться некоторыми мыслями о моей первой конфигурации systemd. До сих пор я просто использовал такие команды, как запуск и остановка, на этот раз я хочу больше.

У меня есть арка для малины-пи. У меня есть внешний USB HDD для хранения данных. Я хочу запустить Samba для совместного использования папок на этом внешнем диске.

Проблема: если HDD не подключен, samba не должна запускаться. Если жесткий диск подключен позже, тогда должна запускаться самба. Если жесткий диск отсоединен во время работы, samba должна остановиться (возможна потеря данных, я думаю, что ничего не могу поделать).

Прочитав примеры и системные руководства, я понял, что:

/ И т.д. / Fstab

UUID="6509-D18E"  /storage  vfat  defaults,nofail,x-systemd.device-timeout=20  0  2

/etc/systemd/system/smbd.service:

[Unit]
Description=Samba SMB/CIFS server
After=network.target nmbd.service winbindd.service
BindsTo=storage.mount
RequiresMountsFor=/storage

[Service]
Type=forking
PIDFile=/var/run/smbd.pid
ExecStart=/usr/bin/smbd -D
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target storage.mount

Ключевыми элементами в fstab являются nofail , если в нем отсутствуют все мои системы, заблокированные во время загрузки. Я думаю, что это говорит systemd продолжить, если жесткий диск не подключен.

WantedBy используется для запуска samba, если подключен жесткий диск, и BindsTo отвечает за остановку samba, если точка монтирования исчезла.

Я что-то упустил или есть даже более элегантное решение?

ура

0