Script erzeugt Fehlermeldung "status_of_proc: not found"

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
debianfrischling
Beiträge: 16
Registriert: 09.08.2009 00:04:33

Script erzeugt Fehlermeldung "status_of_proc: not found"

Beitrag von debianfrischling » 26.08.2012 09:20:51

Hallo,

ich habe meinen Vserver neu aufgesetzt.
Laut uname: 2.6.32-feoktistov.1

Nach apt-get update und apt-get upgrade bekomme ich folgende Fehlermeldung:

/etc/init.d/nginx: 69: status_of_proc: not found

Mein Skript das jahrelang lief:

Code: Alles auswählen

#! /bin/sh

### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the nginx web server
# Description:       starts nginx using start-stop-daemon
### END INIT INFO

###
#
# Als Datei /etc/init.d/nginx anlegen
#
###
 
PATH=/opt/bin:/opt/sbin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/nginx/sbin
DAEMON=/nginx/sbin/nginx
NAME=nginx
DESC=nginx
 
test -x $DAEMON || exit 0
 
# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
        . /etc/default/nginx
fi
 
set -e
 
case "$1" in
  start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --pidfile /nginx/run/nginx.pid \
                --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile /nginx/run/nginx.pid \
                --exec $DAEMON
        echo "$NAME."
        ;;
  restart|force-reload)
        echo -n "Restarting $DESC: "
        start-stop-daemon --stop --quiet --pidfile \
                /nginx/run/nginx.pid --exec $DAEMON
        sleep 1
        start-stop-daemon --start --quiet --pidfile \
                /nginx/run/nginx.pid --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
  reload)
      echo -n "Reloading $DESC configuration: "
      start-stop-daemon --stop --signal HUP --quiet --pidfile /nginx/run/nginx.pid \
          --exec $DAEMON
      echo "$NAME."
      ;;
  status)
      status_of_proc -p /nginx/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
      ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
        exit 1
        ;;
esac
 
exit 0
start, stop, restart und force-reload funktionieren, nur status nicht.

Ich hatte das Branding aus Nginx rausgenommen, aber auch eine Neuinstallation mit Nginx-Branding bringt die gleiche Fehlermeldung.

In den Suchmaschinen bin ich zu "status_of_proc: not found" auch nicht richtig fündig geworden.

Jemand eine Idee?

Danke im Voraus

debianfrischling

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Script erzeugt Fehlermeldung "status_of_proc: not found"

Beitrag von rendegast » 26.08.2012 11:38:59

Ich hatte das Branding aus Nginx rausgenommen, ...
In den Suchmaschinen ...
naja,

Code: Alles auswählen

$ grep status_of_proc /etc/init.d/*
/etc/init.d/acpid:    status_of_proc "$ACPID" acpid
/etc/init.d/bootlogd:   status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
/etc/init.d/clamav-freshclam:status_of_proc () {
/etc/init.d/clamav-freshclam:  status_of_proc "$DAEMON" "$NAME"
/etc/init.d/dbus:    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
/etc/init.d/dovecot:    status_of_proc -p $PIDFILE $DAEMON $NAME && exit 0 || exit $?
/etc/init.d/fetchmail:          status_of_proc $DAEMON fetchmail -p $PIDFILE
/etc/init.d/gdm:        status_of_proc -p "$PIDFILE" "$DAEMON" gdm && exit 0 || exit $?
/etc/init.d/haveged:       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
/etc/init.d/lighttpd:        status_of_proc -p "$PIDFILE" "$DAEMON" lighttpd && exit 0 || exit $?
/etc/init.d/rsyslog:    status_of_proc -p $RSYSLOGD_PIDFILE $RSYSLOGD_BIN $RSYSLOGD && exit 0 || exit $?
/etc/init.d/samba:                      status_of_proc -p $NMBDPID /usr/sbin/nmbd nmbd || status=$?
/etc/init.d/samba:                      status_of_proc -p $SMBDPID /usr/sbin/smbd smbd || status=$?
/etc/init.d/skeleton:# and status_of_proc is working.
/etc/init.d/skeleton:       status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
/etc/init.d/smartmontools:      status_of_proc $DAEMON smartd && exit 0 || exit $?
/etc/init.d/ssh:        status_of_proc -p /var/run/sshd.pid /usr/sbin/sshd sshd && exit 0 || exit $?
/etc/init.d/udev:    status_of_proc /sbin/udevd udevd && exit 0 || exit $?
/etc/init.d/udev:    status_of_proc /sbin/udevd udevd && exit 0 || exit $?
/etc/init.d/winbind:            status_of_proc -p $WINBINDPID $DAEMON winbind && exit 0 || exit $?
In Deinem Startskript fehlt sowas:

Code: Alles auswählen

# Get lsb functions
. /lib/lsb/init-functions
oder verwende ein Startskript aus den debian-Paketen nginx oder nginx-common.

Warum nicht gleich das debian-Paket?
1.2.1 gibt es auch in den squeeze-backports.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Script erzeugt Fehlermeldung "status_of_proc: not found"

Beitrag von Cae » 26.08.2012 11:59:27

Naja, vielleicht hattest du das in /usr/local [1] gespeichert und nicht übernommen, oder /etc/default/ngix enthielt so eine Funktion (unwahrscheinlich). Ungefär äquivalent müsste

Code: Alles auswählen

xargs ps >/dev/null 2>&1 </ngix/run/$NAME.pid && exit 0 || exit $?
sein. Die weiteren Parameter von status_of_proc überprüfen wohl, ob der Prozess auch wirklich nginx heißt und von dieser Binary stammen. Für den Programmnamen könnte man zum Beispiel den $NF von ps verwenden oder /proc/*/cmline | xargs -0 | awk '{ print $1 }'. Beim absoluten Pfad wird es schon schwieriger, da habe ich nichts gefunden, lsof löst zum Bespiel Symlinks auf.

Gruß Cae

[1] da würde das hin gehören, aber du verwendest ja wohl auch /nginx als Stammpfad (wtf?!)
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: Script erzeugt Fehlermeldung "status_of_proc: not found"

Beitrag von rendegast » 26.08.2012 12:16:26

Cae hat geschrieben: oder /etc/default/ngix enthielt so eine Funktion (unwahrscheinlich).
Es ist eine lsb-Funktion, das Skript ist einfach nicht lsb-konform.

Ein Pfad /nginx/sbin ist aber wirklich bedenkenswert, läßt auf den Rest schließen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

debianfrischling
Beiträge: 16
Registriert: 09.08.2009 00:04:33

Re: Script erzeugt Fehlermeldung "status_of_proc: not found"

Beitrag von debianfrischling » 26.08.2012 20:38:17

Hallo,

danke, diese eine Zeile war verschwunden.

Code: Alles auswählen

. /lib/lsb/init-functions
Warum nicht gleich das debian-Paket?
Weil ich immer nur Develoment Versionen verwende. Und durch die Module der Drittanbieter immer selber compilieren muss, je nach Anforderung. Ist halt eine "produktive Testumgebung". Daher auch das /nginx Verzeichnis, wo der ganze Webservercode liegt. Es spart halt Zeit.

debianfrischling

Antworten