Re: Problem mit einem Startscript

From: Harold Gutch <logix(at)foobar.franken.de>
Date: Mon, 14 Jul 2003 14:01:08 +0200

On Mon, Jul 14, 2003 at 01:30:24PM +0200, Marcus Franke wrote:
> Moin,
>
> mein jabber Server startet seit dem letzten Update
> nicht mehr, im jabberd.sh Script scheint ein Fehler
> zu sein:
>
> if ! PREFIX=$(expr $0 : "\(/.*\)/etc/rc\.d/jabberd\.sh\$"); then
> echo "$0: Cannot determine the PREFIX" >&2
> exit 1
> fi
>
> Bricht mit der "Cannot.." Fehlermeldung ab, nun stehe ich
> etwas auf dem Schlauch, was dieses Konstrukt denn bitte
> ergeben soll..
>
> Und aus der man-page von expr werde ich auch nicht schlau,
> falls jemand den netten Tip parat haben sollte, ich m?ge
> doch in die man-page gucken :)
>
> Ich vermute, dass er ein /usr/local oder so herausfinden
> soll/will, aber das nicht hinbekommt..
>
> $0 enth?lt wohl den Aufruf des Startscriptes..
>
> Ok, manchmal scheint es zu helfen, wenn man einfach nur
> dar?ber schreibt, ich rate mal, dass das Script auf
> ein vorhandensein von /etc/rc.d/jabberd.sh checkt im
> Aufruf, denn ein /usr/local/etc/rc.d/jabberd.sh
> funktioniert und startet den Server..

Das Script schaut wie es aufgerufen wurde (das steht in $0),
schaut, ob es auf den regulaeren Ausdruck der danach steht,
matcht, und wenn ja, liefert er alles vor dem "/etc" zurueck:

  $ expr /usr/local/etc/rc.d/jabberd.sh : "\(/.*\)/etc/rc\.d/jabberd\.sh\$"
  /usr/local

Ein "cannot determine PREFIX" deutet darauf hin, dass der Aufruf
des Scripts bei dir anders erfolgt. Z.B. dass du folgendermassen
manuell aufrufst:

  $ cd /usr/local/etc/rc.d
  $ ./jabberd.sh

>
> Die Startscripten, die /usr/local/etc/rc.d/ durchsuchen,
> werden das Teil aber sicherlich direkt mit ./ starten, oder?

Nein. Aus defaults/rc.conf:

local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d" # startup script dirs.

Und in rc steht:
  for dir in ${local_startup}; do
    if [ -d "${dir}" ]; then
      for script in ${dir}/*.sh; do
        slist="${slist}${script_name_sep}${script}"
      done
    fi
  done

Am Ende der Schleife steht also in slist ein String, der alle
vollen Dateinamen (inkl. Pfadangabe) /usr/local/etc/rc.d und
/usr/X11R6/etc/rc.d enthaelt, die auf ".sh" enden. Und die
werden danach genau so (mit vollem Pfad) aufgerufen.

Bei einer ganz normalen Installation sollte es so also
funktionieren. Wenn nicht, hast du entweder irgendwo etwas
verstellt, oder du pastest oben aus dem falschen jabberd.sh
Script.

bye,
  Harold

P.S.: Du hattest ein "Reply-To: de-bsd-questions(at)de-freebsd.org"
      in deiner Mail. Die Einstellung solltest du in deinem
      Mail-Client ausbessern.

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Mon 14 Jul 2003 - 14:01:25 CEST

search this site