Автор Тема: Ред на стартиране/спиране на systemd services  (Прочетена 1486 пъти)

senser

  • Участник
  • *****
  • Публикации: 1327
    • Профил
Привет,

Преди време бях питал в друга тема подобен въпрос, но реших, че е минало доста време оттогава и по-добре да създам нова дискусия.
Става дума за редът, по който се викат/изпълняват systemd услугите. Имам монтирани няколко мрежови файлови системи (cifs), които обаче са достъпни само при работещ VPN (openvpn). Целта на моя service, който се опитвам да направя, е той да се изпълнява *преди* спирането на VPN-a (настроен е през network-manager), когато системата се спира, рестартира, приспива  и да размонтира отдалечените файлови системи. Ето как изглежда един вариант на service-a

Код:
[Unit]
Description=Umount network file systems
After=network-online.target openvpn-client.service
Requires=network-online.target

[Service]
Type=oneshot
EnvironmentFile=/etc/default/umounts.conf
ExecStart=-/bin/umount $OPTIONS -t $FILESYSTEMS
ExecStop=-/bin/umount $OPTIONS -t $FILESYSTEMS

[Install]
WantedBy=multi-user.target network-online.target openvpn-client.service

За съжаление, когато приспивам машината (suspend) не всички отдалечени файлови системи се разкачат, а само 1, или 2. Предполагам systemd не изчаква достатъчно и затова се получава така. Проблемът не е в командата, която прави размонтирането:
ExecStop=-/bin/umount $OPTIONS -t $FILESYSTEMS
Когато я изпълня само нея всичко се разкача, както и се очаква.

Проблемът според мен е в реда на спиране на услугите при shutdown, suspend ... etc Засега тествам само със suspend, защото е най-удобно и бързо, но и при рестартиране, или гасене положението е аналогично.
Активен

senser

  • Участник
  • *****
  • Публикации: 1327
    • Профил
Re: Ред на стартиране/спиране на systemd services
« Отговор #1 -: Апр 26, 2017, 12:05 »
Така и не успях да се преборя със systemd и си реших проблема с два скрипта за network-manager:

Код:
#cat /etc/NetworkManager/dispatcher.d/02vpnup

#!/bin/sh -e

IFACE=$1
ACTION=$2

if [ "$IFACE" = "tun0" ] && [ "$ACTION" = "vpn-up" ]; then
logger "VPNUP: VPN IS GOING UP, MOUNTING STORAGES";
for MOUNT in storage storage2; do
if ! /bin/mountpoint -q /mnt/$MOUNT; then
/bin/mount /mnt/$MOUNT;
else
/bin/mount -o remount /mnt/$MOUNT;
fi
done
fi

exit 0;


Код:
#cat /etc/NetworkManager/dispatcher.d/pre-down.d/01vpndown

#!/bin/sh -e

IFACE=$1
ACTION=$2

#DEFAULT ROUTE INTERFACE
DEFAULT_IFACE=`/bin/ip route ls |grep '^default' |cut -d " " -f 5`;

if ([ "$IFACE" = "tun0" ] && [ "$ACTION" = "vpn-pre-down" ]) || ([ "$IFACE" = "$DEFAULT_IFACE" ] && [ "$ACTION" = "pre-down" ]); then
logger "VPNDOWN: VPN OR DEFAULT ROUTE IFACE IS GOING DOWN, UNMOUNTING STORAGES";
for MOUNT in storage storage2; do
if ! /bin/umount --force --lazy /mnt/$MOUNT >/dev/null 2>&1 1>&0; then
logger "VPNDOWN: FAILED TO UMOUNT $MOUNT";
fi
done
fi

exit 0;
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
За systemd-tmpfiles демон
Настройка на програми
clovenhoof 2 1799 Последна публикация Апр 18, 2013, 09:50
от bvbfan
какво мислите за systemd?
Живота, вселената и някакви други глупости
lunarvalley 379 44253 Последна публикация Дек 03, 2016, 17:24
от Acho
boycott systemd
Коментар
lunarvalley 19 4671 Последна публикация Юни 01, 2014, 10:00
от go_fire
Създаване на systemd unit
Настройка на програми
senser 5 2264 Последна публикация Ное 24, 2014, 19:38
от go_fire
Systemd в Ubuntu 14.04
Настройка на програми
cybercop 0 886 Последна публикация Фев 16, 2016, 20:49
от cybercop