[Решено] Автозапуск обычной программы, не демон

Была у меня задача запустить сервер написанный на 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 ? В чем проблема?
/opt/z-way-server/z-way-server - исполняемый?
От какого пользователя запускается?
Перепроверьте все права доступа и пока не добьётесь запуска и стабильной работы вручную, смысла нет это в systemd пихать.
Сервер общается с девайсом, запускаю от рута, другого пользователя на сервере нет.
Вручную запущенный сервер работает стабильно.
Для 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
Вот вы в дебиановском скрипте ему и переменные окружения прописываете, и перенаправление потоков ввода-вывода обеспечили. А systemd, думаете, сам обо всем этом должен догадываться?
Или пишите в юните просто:
ExecStart=/opt/z-way-server/<дебиановский скрипт> start
ExecStop=/opt/z-way-server/<дебиановский скрипт> stop
Вот так сейчас выглядит сервис файл:
[[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.
Заработало вот так:
[[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
 
Зарегистрироваться или войдите чтобы оставить сообщение.