aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Была у меня задача запустить сервер написанный на python, так и не получилось. Теперь этот сервер переписан на Си, и опять же я не могу его запустить из systemd. Сервер просто передает и получает данные по сети и выводит их в stdout. Сервер обращается к своим библиотекам в той же директории, что и он сам. Вот z-way-server.service: [Unit] Description=Z-Way Home Automation #After=network.target [Service] Type=oneshot RootDirectory=/opt/z-way-server/ ExecStart=/opt/z-way-server/z-way-server ExecStop=/usr/bin/killall z-way-server ExecReload=/usr/bin/killall z-way-server; /opt/z-way-server/z-way-server PIDFile=/var/run/run-z-way-server.pid [Install] WantedBy=multi-user.target Запускаю, но не работает: [[email protected] multi-user.target.wants]#systemctl start z-way-server [[email protected] multi-user.target.wants]#systemctl status z-way-server.service z-way-server.service - Z-Way Home Automation Loaded: loaded (/etc/systemd/system/multi-user.target.wants/z-way-server.service) Active: failed (Result: exit-code) since Sun 2013-08-25 23:01:37 MSK; 4min 7s ago Process: 21247 ExecStop=/usr/bin/killall z-way-server (code=exited, status=203/EXEC) Process: 21245 ExecStart=/opt/z-way-server/z-way-server (code=exited, status=203/EXEC) Aug 25 23:01:37 ArchServer systemd[1]: Starting Z-Way Home Automation... Aug 25 23:01:37 ArchServer systemd[1]: Started Z-Way Home Automation. Aug 25 23:01:37 ArchServer systemd[1]: z-way-server.service: main process exited, code=exited, status=203/EXEC Aug 25 23:01:37 ArchServer systemd[1]: z-way-server.service: control process exited, code=exited status=203 Aug 25 23:01:37 ArchServer systemd[1]: Unit z-way-server.service entered failed state. [[email protected] multi-user.target.wants]#journalctl -xn Aug 25 23:01:37 ArchServer z-way-server[21245]: Failed at step EXEC spawning /opt/z-way-server/z-way-server: No such file or directory Aug 25 23:01:37 ArchServer systemd[1]: z-way-server.service: main process exited, code=exited, status=203/EXEC Aug 25 23:01:37 ArchServer killall[21247]: Failed at step EXEC spawning /usr/bin/killall: No such file or directory Aug 25 23:01:37 ArchServer systemd[1]: z-way-server.service: control process exited, code=exited status=203 Aug 25 23:01:37 ArchServer systemd[1]: Unit z-way-server.service entered failed state. Почему он пишет No such file or directory ? В чем проблема? |
Nebulosa |
|
Темы:
10
Сообщения:
831
Участник с: 05 марта 2009
|
/opt/z-way-server/z-way-server - исполняемый? От какого пользователя запускается? Перепроверьте все права доступа и пока не добьётесь запуска и стабильной работы вручную, смысла нет это в systemd пихать. |
aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Сервер общается с девайсом, запускаю от рута, другого пользователя на сервере нет. Вручную запущенный сервер работает стабильно. Для debian я написал такой скрипт загрузки и он работает: PATH=/bin:/usr/bin:/sbin:/usr/sbin NAME=z-way-server DAEMON_PATH=/opt/z-way-server PIDFILE=/var/run/$NAME.pid LOGFILE=/var/log/$NAME.log # adding z-way libs to library path export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/z-way-server/libs case "$1" in start) echo -n "Starting Z-Way: " start-stop-daemon --start --pidfile $PIDFILE --make-pidfile --background --no-close --chdir $DAEMON_PATH --exec $NAME > $LOGFILE 2>&1 echo "done." ;; stop) echo -n "Stopping Z-Way: " start-stop-daemon --stop --quiet --pidfile $PIDFILE rm $PIDFILE echo "done." ;; restart) echo "Restarting Z-Way: " sh $0 stop sleep 20 sh $0 start ;; esac exit 0 |
kurych |
|
Темы:
0
Сообщения:
1394
Участник с: 06 ноября 2011
|
Вот вы в дебиановском скрипте ему и переменные окружения прописываете, и перенаправление потоков ввода-вывода обеспечили. А systemd, думаете, сам обо всем этом должен догадываться? Или пишите в юните просто: ExecStart=/opt/z-way-server/<дебиановский скрипт> start ExecStop=/opt/z-way-server/<дебиановский скрипт> stop |
aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Вот так сейчас выглядит сервис файл: [[email protected] z-way-server]# cat /etc/systemd/system/multi-user.target.wants/z-way-server.service [Unit] Description=Z-Way Home Automation #After=network.target [Service] Type=simple RootDirectory=/opt/z-way-server/ #WorkingDirectory=/opt/z-way-server/ ExecStart=/opt/z-way-server/z-way.sh ExecStop=/usr/bin/killall z-way-server ExecReload=/usr/bin/killall z-way-server; /opt/z-way-server/z-way.sh PIDFile=/var/run/run-z-way-server.pid [Install] WantedBy=multi-user.target Вот написал скрипт для запуска сервера, если его вручную запустить, то он без проблем стартует сервер в фоне: [[email protected] ~]# cat /opt/z-way-server/z-way.sh #!/bin/sh export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/z-way-server/libs /opt/z-way-server/z-way-server > /var/log/z-way-server.log 2>&1 & exit 0 Но если запустить его из сервис файла, то не работает, ошибок при старте не выдает: [[email protected] ~]# systemctl --system daemon-reload [[email protected] ~]# systemctl start z-way-server [[email protected] ~]# systemctl status z-way-server.service z-way-server.service - Z-Way Home Automation Loaded: loaded (/etc/systemd/system/multi-user.target.wants/z-way-server.service) Active: failed (Result: exit-code) since Thu 2013-08-29 23:24:38 MSK; 12s ago Process: 9205 ExecStop=/usr/bin/killall z-way-server (code=exited, status=203/EXEC) Process: 9204 ExecStart=/opt/z-way-server/z-way.sh (code=exited, status=203/EXEC) Aug 29 23:24:38 ArchServer systemd[1]: Started Z-Way Home Automation. Aug 29 23:24:38 ArchServer systemd[1]: z-way-server.service: main process exited, code=exited, status=203/EXEC Aug 29 23:24:38 ArchServer systemd[1]: z-way-server.service: control process exited, code=exited status=203 Aug 29 23:24:38 ArchServer systemd[1]: Unit z-way-server.service entered failed state. |
aivs |
|
Темы:
62
Сообщения:
261
Участник с: 31 октября 2006
|
Заработало вот так: [[email protected] ~]# cat /etc/systemd/system/multi-user.target.wants/z-way-server.service [Unit] Description=Z-Way Home Automation [Service] Type=forking ExecStart=/usr/bin/sh /opt/z-way-server/z-way.sh KillMode=process [Install] WantedBy=multi-user.target [[email protected] ~]#cat /opt/z-way-server/z-way.sh #!/bin/sh export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/z-way-server/libs cd /opt/z-way-server ./z-way-server > /var/log/z-way-server.log 2>&1 & exit 0 |