Eigener Dienst macht keinen Autostart 1

Krull

Well-Known Member
Hallo,

ich habe bei zwei eigenen Diensten Probleme mit dem Autostart beim Systemboot. Da die Fehler leicht anders aussehen hier erstmal nur zum Ersten. Das Ding manuell mit sudo -u netsvc /opt/netsvc/run.sh zu starten funktioniert einwandfrei. In /etc/rc.conf steht ganz am Ende:
Code:
netsvc_enable="YES"
netsvc_user="netsvc"
Das Startskript liegt in /usr/local/etc/rc.d/netsvc und sieht so aus (aue Vorlage dazu habe ich aus dem FreeBSD-Handbuch):
Code:
#!/bin/sh

. /etc/rc.subr

name=netsvc
rcvar=netsvc_enable

command="/opt/netsvc/run.sh"

load_rc_config $name
run_rc_command "$1"
Die Rechte sind wie bei allen anderen Starktskripten in dem Verzeichnis und in /var/log/{messages,dmesg*} konnte ich nichts finden, was den Dienst betrifft. Deshalb weiß ich nicht mehr so recht, was ich noch tun muss...
 
Achso, vielleicht sollte ich nochmal klar sagen, was genau das Problem ist. Also, manuell kann ich das Teil starten, und beim Rechnerstart wird es eben nicht gestartet, obwohl in rc.conf eingetragen.
 
Absolut ungetestet und wirklich nur schnell überflogen:
Code:
#!/bin/sh

# PROVIDE: netsvc
# REQUIRE: DAEMON NETWORKING
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following lines to /etc/rc.conf.local or /etc/rc.conf
# to enable this service:
#
# netsvc_enable (bool): Set to YES to enable
# netsvc_flags (str):  Extra flags

. /etc/rc.subr

name="netsvc"
rcvar="${name}_enable"

load_rc_config $name

: ${netsvc_enable:="NO"}
: ${netsvc_flags:=""}

USER="<WER AUCH IMMER>"
COMMAND="/opt/netsvc/run.sh"
LOGFILE="/var/log/${name}.log"

start_precmd=${name}_prestart
pidfile="/var/run/${name}.pid"

command="/usr/sbin/daemon"
command_args="-crP ${pidfile} -u ${USER} ${COMMAND} ${netsvc_flags} 1>>${LOGFILE} 2>&1"

netsvc_prestart() {
  rc_flags=""
}

run_rc_command "$1"
Wenn es nicht unter einen speziellen User starten soll, dann solltest du einfach das "USER=" entfernen und in der Zeile "command_args=" das "-u ${USER}".
 
Ich habe es mit deinem Vorschlag versucht, der hat die Sache allerdings eher verschlimmbessert ;)
Nun kann kann ich den Dienst nicht mal mehr mit service netsvc start in die Gänge bekommen.
In /var/log/messages heißt es jetzt:
Code:
Nov 18 12:51:41 minion user: /usr/local/etc/rc.d/netsvc: WARNING: failed precmd routine for netsvc
Ich brauche ja gar kein Prestartgedöns. Deshalb habe ich dafür einfach einen leeren String hingesetzt:
Code:
start_precmd=""
Die Fehlermeldung verschwindet dann zwar, aber der Dienst startet trotzdem nicht :-/
Code:
Nov 18 12:55:10 minion user: /usr/local/etc/rc.d/netsvc: WARNING: failed to start netsvc
Diese Meldung hilft mir noch weniger weiter als die davor...
 
Versuche mal auf der Konsole den daemon(8)-Aufruf nachzustellen:
Code:
$ daemon -crP /var/run/netsvc.pid -u netsvc /opt/netsvc/run.sh
was passiert dann?
Was steht in /opt/netsvc/run.sh?
Rob
 
Ich habe es jetzt so gelöst, dass ich einen @reboot-Eintrag in die Crontab von root geschrieben habe. Keine Ahnung, wieso Init das nicht hinbekommt. Aber so geht's nun.
 
Zurück
Oben