Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ PtokaX под *nix _ Автозапуск PtokaX на Rassberry Pi?

Автор: Sezam 19.10.2016, 11:21

Привет админы, помогите запустить Птоху на Rassberry Pi, собирал от http://mydc.ru/r/?http://dcbeelinekz.1bb.ru/viewtopic.php?id=90
Запускается она тока:
cd PtokaX
./PtokaX

После закрытия терминала (захожу через SHH под винды), отключается сам хаб, думал запустить демоном чтоб при закрытии не отключался ./PtokaX -d
root@sezam:~/PtokaX# ./PtokaX -d
Starting PtokaX DC Hub 0.5.0.2 as daemon using /root/.PtokaX as config directory.

root@sezam:~# root/PtokaX/PtokaX - так не запускается
скриптом тоже не могу запустить, пишет:
root@sezam:~# service ptokax start
Failed to start ptokax.service: Unit ptokax.service failed to load: No such file or directory.

Вот этот скрипт
Делал так PXBIN=/root/PtokaX/PtokaX тоже такая же ошибка что выше

Код
#!/bin/sh
### BEGIN INIT INFO
# Provides:          ptokax
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Start/stop/restart the services for PtokaX DC Hub.
### END INIT INFO

PXUSER=root
PXPATH=/etc/ptokax
PXBIN=/usr/bin/ptokax

px_start() {
    if [ -x $PXBIN ]; then
        if [ "$(pidof $PXBIN)" != "" ]; then
            echo "PtokaX already running!"
        else
            ulimit -n 29240
            su -p -c "$PXBIN -d -c $PXPATH" $PXUSER
        fi
    fi
}
px_stop() {
    if [ "$(pidof $PXBIN)" != "" ]; then
        kill -15 $(pidof $PXBIN)
        echo "PtokaX stopping..."
    else
        echo "PtokaX not running!"
    fi
}
px_restart() {
    px_stop
    while [ "$(pidof $PXBIN)" != "" ]; do
        sleep 1
    done
    px_start
}

px_status() {
    if [ "$(pidof $PXBIN)" != "" ]; then
        echo "PtokaX running with PID(s): $(pidof $PXBIN)"
    else
        echo "PtokaX not running!"
    fi
}
case "$1" in
'start')
px_start
;;
'stop')
px_stop
;;
'restart')
px_restart
;;
'status')
px_status
;;
*)
echo "Usage start|stop|restart|status"

esac

exit 0


Автор: Saymon21 22.10.2016, 0:13

Цитата
Failed to start ptokax.service: Unit ptokax.service failed to load: No such file or directory.

Пора копать не в сторону башевых скриптов, а в сторону юнитов systemd.


Что-то типа:
/lib/systemd/system/ptokax.service
Код
[Unit]
Description=Ptokax DC Hub
After=network.target

[Service]
ExecStart=/usr/bin/ptokax -c /etc/ptokax

[Install]
WantedBy=multi-user.target


PS. Не проверял.

Автор: Sezam 23.10.2016, 12:46

Цитата(Saymon21 @ 22.10.2016, 0:13) *
Пора копать не в сторону башевых скриптов, а в сторону юнитов systemd.


Что-то типа:
/lib/systemd/system/ptokax.service
Код
[Unit]
Description=Ptokax DC Hub
After=network.target

[Service]
ExecStart=/usr/bin/ptokax -c /etc/ptokax

[Install]
WantedBy=multi-user.target


PS. Не проверял.


Спасибо, есть еще варианты?

Автор: KCAHDEP 23.10.2016, 15:50

Цитата
root@sezam:~# service ptokax start
Failed to start ptokax.service: Unit ptokax.service failed to load: No such file or directory.

скопируй скрипт в
Код
/etc/init.d/
сделай его исполняемым
Код
chmod +x /etc/init.d/имя_файла
и выполни
Код
update-rc.d имя_файла defaults

Автор: Sezam 24.10.2016, 12:01

Цитата(KCAHDEP @ 23.10.2016, 15:50) *
скопируй скрипт в
Код
/etc/init.d/
сделай его исполняемым
Код
chmod +x /etc/init.d/имя_файла
и выполни
Код
update-rc.d имя_файла defaults

# service ptokax start
Warning: Unit file of ptokax.service changed on disk, 'systemctl daemon-reload' recommended.

Вот ту правильно?
PXUSER=root
PXPATH=/etc/ptokax
PXBIN=/root/PtokaX/PtokaX - место файла

Сколько бы не искал не могу найти скрипт автозагрузки хаба под Raspberry

Автор: Saymon21 24.10.2016, 20:39

Ещё раз. Копай в сторону юнитов. У меня пока нету к сожалению времени и systemd проверить.
И скажи хотя-бы, какие проблемы с тем юнитом, что я дал?

Цитата
Warning: Unit file of ptokax.service changed on disk, 'systemctl daemon-reload' recommended.

Тебе говорит, что юнит поменялся на диске и рекомендуют выполнить команду.

Автор: Saymon21 28.10.2016, 18:49

Ну что? Остались проблемы? У меня тут завтра примерно будет пару виртуалок с systemd, смогу оттестить юниты. На всякий случай, конечно скажи какая ось.

Автор: Saymon21 2.11.2016, 20:06

Ну как я и говорил. Никакие велики на баше не нужны. Вот рабочий systemd юнит с плюшками для запуска ptokax.
/lib/systemd/system/ptokax.service

Код
[Unit]
Description=Ptokax DC Hub
After=network.target

[Service]
ExecStart=/usr/bin/ptokax -c /etc/ptokax
User=ptokax
Group=ptokax
Restart=always
RestartSec=5s
WorkingDirectory=/etc/ptokax
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
PrivateTmp=yes
PrivateDevices=yes
ProtectSystem=full
ProtectHome=yes
NoNewPrivileges=yes

[Install]
WantedBy=multi-user.target

После этого конфига:

Код
systemctl daemon-reload
systemctl enable ptokax.service
systemctl start ptokax.service


В системе должны быть юзер и группа ptokax. Бинарник /usr/bin/ptokax, конфиги, скрипты и т.п /etc/ptokax
Из плюшек тут можно сбиндится на 411 порт. Если попадает птоха, рестартанёт. Ну чуть ещё секурности.
ps. Проверял на ubuntu 16.4 amd64.

Автор: Sezam 3.11.2016, 12:28

Цитата(Saymon21 @ 2.11.2016, 20:06) *
Ну как я и говорил. Никакие велики на баше не нужны. Вот рабочий systemd юнит с плюшками для запуска ptokax.


Дай Бог тебе здоровья за старания.


Вот:
root@raspberrypi:~# systemctl daemon-reload
root@raspberrypi:~# systemctl enable ptokax.service
Failed to execute operation: No such file or directory


Автор: Saymon21 3.11.2016, 16:35

Код
systemctl show |grep UnitPath
покажи выхлоп.

Автор: Sezam 5.11.2016, 10:51

Цитата(Saymon21 @ 3.11.2016, 16:35) *
Код
systemctl show |grep UnitPath
покажи выхлоп.


root@raspberrypi:~# systemctl show |grep UnitPath
UnitPath=/etc/systemd/system /run/systemd/system /run/systemd/generator /usr/local/lib/systemd/system /lib/systemd/system /usr/lib/systemd/system /run/systemd/generator.late

Автор: Saymon21 5.11.2016, 12:58

А куда юнит положил?
В любом из перечисленных путей в выводе прошлой команды, должен быть файл ptokax.service, в котором должно быть то, что я описал в http://mydc.ru/index.html?showtopic=5834&view=findpost&p=47368 посте.

Автор: Sezam 6.11.2016, 19:43

Цитата(Saymon21 @ 5.11.2016, 12:58) *
А куда юнит положил?
В любом из перечисленных путей в выводе прошлой команды, должен быть файл ptokax.service, в котором должно быть то, что я описал в http://mydc.ru/index.html?showtopic=5834&view=findpost&p=47368 посте.


вот суда, не работает можь потому что другая архитектура как бы система Дебиан?

Автор: Saymon21 7.11.2016, 9:14

Потому что не туда куда надо.