Hi,
bei mir funktioniert der unten gezeigte Ansatz. Nachdem die beiden files an die richtige Stelle kopiert wurden, braucht es noch ein systemctl daemon-reload und es sollte funktionieren. Ich bin aber kein Experte für systemd, weiß also nicht, ob das ein sinnvoller Ansatz ist. Ich würde außerdem gerne den Service als user laufen lassen, aber es gelingt mir noch nicht, das Startscript von picapport als non-root user laufen zu lassen.
Grüße
Thomas
/etc/systemd/system/picapport.service
[Unit]
Description=Run picapport server as user picapport
DefaultDependencies=no
After=network.target
[Service]
Type=simple
#User=picapport
#Group=picapport
ExecStart=/opt/picapport/picapport start
ExecStop=/opt/picapport/picapport stop
TimeoutStartSec=0
RemainAfterExit=yes
[Install]
WantedBy=default.target
/opt/picapport/picapport
#!/bin/bash
# Filename : picapport
# Version : 2.0
# Date : 20.09.2016
# Copyright : (c) 2016 Contecon Software GmbH
# Description : starting script for starting PicApport as a daemon
# History : 20.08.2015 - Initial version
# 20.09.2016 - revised
### BEGIN INIT INFO
# Provides: picapport
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2
# Default-Stop: 1
# Short-Description: PicApport Server
### END INIT INFO
PATH=/usr/bin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=picapport
DESC="PicApport Daemon"
DAEMON_ARGS="-d -m -S $NAME bash /opt/picapport/StartPicApport.sh"
case "$1" in
start)
start-stop-daemon --test --start --pidfile "/var/run/$NAME.pid" --exec /usr/bin/screen -- $DAEMON_ARGS
if [ $? -eq 0 ]; then
echo -n "Starting $DESC: "
start-stop-daemon --start --pidfile "/var/run/$NAME.pid" --exec /usr/bin/screen -- $DAEMON_ARGS
PID=$( ps -aux | grep 'StartPicApport.sh' | grep --ignore-case 'screen' | awk '{print $2}' | head -1)
echo $PID > /var/run/$NAME.pid
echo "Daemon $NAME started. To access console type: screen -R $PID.picapport"
else
echo -n "Daemon $NAME already running. To access console type: screen -R "
cat /var/run/$NAME.pid | awk '{print $1".picapport"}'
fi
;;
stop)
echo -n "Stopping $DESC: "
start-stop-daemon --stop −−retry=SIGTERM/30/KILL/10 --pidfile "/var/run/$NAME.pid" --exec /usr/bin/screen -- $DAEMON_ARGS
if [ $? -eq 0 ]; then
echo "Daemon $NAME stopped."
else
echo "Daemon $NAME was not started."
fi
[ -e /var/run/$NAME.pid ] && rm /var/run/$NAME.pid
;;
status)
start-stop-daemon --status --pidfile "/var/run/$NAME.pid" --exec /usr/bin/screen -- $DAEMON_ARGS
if [ $? -eq 0 ]; then
echo -n "Daemon $NAME is running. To access console type: screen -R "
cat /var/run/$NAME.pid | awk '{print $1".picapport"}'
else
echo "Daemon $NAME was not started."
fi
;;
*)
echo "usage: /etc/init.d/picapport start|stop|status"
;;
esac
exit 0