systemd: передать запуск/остановку службе

Я пытаюсь создать сценарий инициализации systemd для запуска и остановки более мягкого VPN-сервера.

руководство, которое я нашел, предлагает следовать сценарию init.d.

#!/bin/sh
# chkconfig: 2345 99 01
# description: SoftEther VPN Server

DAEMON=/usr/local/vpnserver/vpnserver
LOCK=/var/lock/subsys/vpnserver
test -x $DAEMON || exit 0

case "$1" in
    start)
        $DAEMON start
        touch $LOCK
        ;;
    stop)
        $DAEMON stop
        rm $LOCK
        ;;
    restart)
        $DAEMON stop
        sleep 3
        $DAEMON start
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit 0

Но я хотел бы использовать systemd, поэтому я написал следующий служебный файл.

[Unit]
Description=Softether VPN server
After=syslog.target
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

# Give a reasonable amount of time for the server to start up/shut down
TimeoutSec=300

[Install]
WantedBy=multi-user.target

Но этот скрипт не поддерживает работу VPN-сервера. sudo systemctl status softethervpn дает мне следующий статус.

● softethervpn.service - Softether VPN server
   Loaded: loaded (/lib/systemd/system/softethervpn.service; disabled)
   Active: deactivating (stop) since Mon 2016-04-18 19:11:41 CEST; 1s ago
  Process: 1463 ExecStart=/usr/local/vpnserver/vpnserver start (code=exited, status=0/SUCCESS)
 Main PID: 1463 (code=exited, status=0/SUCCESS);         : 1474 (vpnserver)
   CGroup: /system.slice/softethervpn.service
           ├─1471 /usr/local/vpnserver/vpnserver execsvc
           └─control
             └─1474 /usr/local/vpnserver/vpnserver stop

Apr 18 19:11:40 raspberrypi systemd[1]: Started Softether VPN server.
Apr 18 19:11:41 raspberrypi vpnserver[1463]: The SoftEther VPN Server service has been started.
Apr 18 19:11:42 raspberrypi vpnserver[1474]: Stopping the SoftEther VPN Server service ...
Apr 18 19:11:42 raspberrypi vpnserver[1474]: SoftEther VPN Server service has been stopped.

Как мне нужно исправить мой служебный файл, чтобы он работал правильно?


person wewa    schedule 18.04.2016    source источник
comment
Попробуйте включить и запустить демона sudo systemctl enable softethervpn.service и sudo systemctl start softethervpn.service, затем проверить статус   -  person GAD3R    schedule 20.04.2016
comment
Именно это я и сделал. Кроме того, sudo systemctl enable softethervpn позволяет службе автоматически запускаться только во время загрузки.   -  person wewa    schedule 22.04.2016


Ответы (1)


Кажется, что Type должно быть forking. У меня работает следующий сценарий (найдено по адресу Файл конфигурации SoftEther для Systemd).

[Unit]
Description=SoftEther VPN Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/vpnserver/vpnserver start
ExecStop=/usr/local/vpnserver/vpnserver stop

[Install]
WantedBy=multi-user.target
person wewa    schedule 19.04.2016