LINUX.ORG.RU

История изменений

Исправление pfg, (текущая версия) :

ну в блин даете :) системд не запускает оболочку для обработки командонй строчки ExecStart и иже с ними.
посему ExeceStart должон указывать на исполняемый двоичный файл, если нужно именно выполнить баш-лапшу надо запускать bash и уже ему скармливать оапшу и т.д.
https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html

Note that shell command lines are not directly supported. If shell command lines are to be used, they need to be passed explicitly to a shell implementation of some kind.
Example:

ExecStart=sh -c ‘dmesg | tac’

т.е. запускать надо

ExecStart =  /usr/bin/bash /opt/vpnserver.sh start
ExecStop =   /usr/bin/bash /opt/vpnserver.sh stop
ExecReload = /usr/bin/bash /opt/vpnserver.sh restart

но я б плюнул на баше лапшу и запускал напрямую. чтонить типа такого. куча костылей баш-лапши отваливается.

[Unit]
Description = vpnserver daemon
Environment="TAP_ADDR=192.168.10.1"

[Service]
ExecStart = /usr/src/vpnserver/vpnserver start
ExecStart = /sbin/ifconfig tap_tap_virtual $TAP_ADDR
ExecStartPost= systemctl start dhcpd


ExecStop = /usr/src/vpnserver/vpnserver stop
Restart = always
RestartSec=15
Type = forking

[Install]
WantedBy = multi-user.target

Исправление pfg, :

ну в блин даете :) системд не запускает оболочку для обработки командонй строчки ExecStart и иже с ними.
посему ExeceStart должон указывать на исполняемый двоичный файл, если нужно именно выполнить баш-лапшу надо запускать bash и уже ему скармливать оапшу и т.д.
https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html

Note that shell command lines are not directly supported. If shell command lines are to be used, they need to be passed explicitly to a shell implementation of some kind.
Example:

ExecStart=sh -c ‘dmesg | tac’

т.е. запускать надо

ExecStart =  /usr/bin/bash /opt/vpnserver.sh start
ExecStop =   /usr/bin/bash /opt/vpnserver.sh stop
ExecReload = /usr/bin/bash /opt/vpnserver.sh restart

но я б плюнул на баше лапшу и запускал напрямую. чтонить типа такого.

[Unit]
Description = vpnserver daemon
Environment="TAP_ADDR=192.168.10.1"

[Service]
ExecStart = /usr/src/vpnserver/vpnserver start
ExecStart = /sbin/ifconfig tap_tap_virtual $TAP_ADDR
ExecStartPost= systemctl start dhcpd


ExecStop = /usr/src/vpnserver/vpnserver stop
Restart = always
RestartSec=15
Type = forking

[Install]
WantedBy = multi-user.target

Исходная версия pfg, :

ну в блин даете :) системд не запускает оболочку для обработки командонй строчки ExecStart и иже с ними.
посему ExeceStart должон указывать на исполняемый двоичный файл, если нужно именно выполнить баш-лапшу надо запускать bash и т.д.
https://www.freedesktop.org/software/systemd/man/latest/systemd.service.html

Note that shell command lines are not directly supported. If shell command lines are to be used, they need to be passed explicitly to a shell implementation of some kind.
Example:

ExecStart=sh -c ‘dmesg | tac’

т.е. запускать надо

ExecStart =  /usr/bin/bash /opt/vpnserver.sh start
ExecStop =   /usr/bin/bash /opt/vpnserver.sh stop
ExecReload = /usr/bin/bash /opt/vpnserver.sh restart

но я б плюнул на баше лапшу и запускал напрямую. чтонить типа такого.

[Unit]
Description = vpnserver daemon
Environment="TAP_ADDR=192.168.10.1"

[Service]
ExecStart = /usr/src/vpnserver/vpnserver start
ExecStart = /sbin/ifconfig tap_tap_virtual $TAP_ADDR
ExecStartPost= systemctl start dhcpd


ExecStop = /usr/src/vpnserver/vpnserver stop
Restart = always
RestartSec=15
Type = forking

[Install]
WantedBy = multi-user.target