Я просто хочу поделиться некоторыми мыслями о моей первой конфигурации 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, если точка монтирования исчезла.
Я что-то упустил или есть даже более элегантное решение?
ура