Мэинтейнер обновил пакет с моим патчем
Description: Brother cupd and lpd driver for DCP-7030
Last Updated: 2013-09-04 09:59
Теперь все должно работать сразу после установки: yaourt -S brother-dcp7030
Заработало вот так:
[root@ArchServer ~]# 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

[root@ArchServer ~]#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
Вот так сейчас выглядит сервис файл:
[root@ArchServer 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

Вот написал скрипт для запуска сервера, если его вручную запустить, то он без проблем стартует сервер в фоне:
[root@ArchServer ~]# 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

Но если запустить его из сервис файла, то не работает, ошибок при старте не выдает:
[root@ArchServer ~]# systemctl --system daemon-reload
[root@ArchServer ~]# systemctl start z-way-server
[root@ArchServer ~]# 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.
Сервер общается с девайсом, запускаю от рута, другого пользователя на сервере нет.
Вручную запущенный сервер работает стабильно.
Для 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
Была у меня задача запустить сервер написанный на 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

Запускаю, но не работает:
[root@ArchServer multi-user.target.wants]#systemctl start z-way-server
[root@ArchServer 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.

[root@ArchServer 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 ? В чем проблема?
И вправду, оказалось все просто, foomatic и hplip не нужны.
1) Установил cups
2) Установил brother-dcp7030
3) Заменил /usr/local/Brother/cupswrapper/cupswrapperDCP7030-2.0.2 на новый для systemctl cupswrapperDCP7030-2.0.2.sh
4) Права chmod +x /usr/local/Brother/cupswrapper/cupswrapperDCP7030-2.0.2.sh
5) Запустил его
6) Открыл web интерфейс cups: localhost:631 и распечатал пробную страницу

Теперь все отлично, спасибо!
Написал maintainer'у пакета, чтобы заменил на новый cupswrapperDCP7030-2.0.2.sh.
И в вики добавлю.
Видимо с этим принтером я буду мучиться до конца его дней, с тех пор как его настроил, он печатает, но с некоторым недостатком.
У некоторых букв удлиненные концы, на скриншоте видно:

Я не могу понять в чем дело, давным давно на старой версии cups такого не было.
Драйвер в cups пишет такой: Brother DCP-7020 Foomatic/hl1250
Спасибо, забыл про него, теперь работает.
Объясните, в пакете samba есть сервисы:
/usr/lib/systemd/system/nmbd.service - обеспечивает клиентам поддержку сервера имен NetBIOS
/usr/lib/systemd/system/smbd.service -предоставляет клиентам сервисы SMB (шара файлов и принтеров)
/usr/lib/systemd/system/winbindd.service -служба NSS, которая используется Samba для преобразования имен от серверов NT
/usr/lib/systemd/system/samba.service

nmbd smbd и я использую, чтобы сделать шару, а что делает сервис samba.service ?
Решил поднять samba шару, установил samba 4.0.6, запустил со стандартным smb.conf, а он мне в ответ:
[root@ArchLinux samba]# tail /var/log/samba/smb.log
[2013/07/21 18:56:05,  0] ../source4/smbd/server.c:369(binary_smbd_main)
  samba version 4.0.6 started.
  Copyright Andrew Tridgell and the Samba Team 1992-2012
[2013/07/21 18:56:05,  0] ../source4/smbd/server.c:461(binary_smbd_main)
  At this time the 'samba' binary should only be used for either:
  'server role = active directory domain controller' or to access the ntvfs file server with 'server services = +smb' or the rpc proxy with 'dcerpc endpoint servers = remote'
  You should start smbd/nmbd/winbindd instead for domain member and standalone file server tasks

Я не понял я могу папочку расшарить ? чего он от меня хочет?
After=systemd-udevd.service не помогло, скрипт по прежнему перестает работать, только начав.

Что делает скрипт: устанавливает соединение с устройством и начинает с ним общаться по UART, устройство передает данные, скрипт обрабатывает их, в начале видно, что соединение устанавливается и устройство даже успевает передать некоторые данные, далее запускается веб сервер, чтобы можно было управлять устройством.

Этот скрипт использует python библиотеки:
python2-crypto 2.6-3
python2-pyserial

Главным условием работы скрипта является, то что модуль pl2303 подгружен и устройство /dev/ttyUSB0 существует.

Есть ли директива ?
After= загружать в последнюю очредь

Может дело вовсе не в After, а в чем то другом?