[SOLVED] init.d script Frage die x'te

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
ren22

[SOLVED] init.d script Frage die x'te

Beitrag von ren22 » 29.07.2014 16:03:15

hi

ich habe ein kleines init script geschrieben, das liegt auch in /etc/init.d/openrtsp.sh
chmod 755 und chmod +x ist gesetzt, eingetragen habe ich das Script wie üblich mit "update-rc.d openrtsp.sh defaults"

find /etc/rc* -name "*openrtsp*"
/etc/rc0.d/K01openrtsp.sh
/etc/rc1.d/K01openrtsp.sh
/etc/rc2.d/S01openrtsp.sh
/etc/rc3.d/S01openrtsp.sh
/etc/rc4.d/S01openrtsp.sh
/etc/rc5.d/S01openrtsp.sh
/etc/rc6.d/K01openrtsp.sh

wenn ich das Script per Hand ausführe klappt alles soweit, aber nur nicht wenn ich ein reboot mache killt er scheinbar den Process nicht richtig oder den Prozess gibt es scheinbar nicht mehr weil ich ein reboot-Test gemacht habe wo ich die PID abfrage und in eine Textdatei schreiben lasse aber die Datei in den der Wert reingeschrieben wird enthält nur 1 Leerfeld.

Code: Alles auswählen

#!/bin/sh
### BEGIN INIT INFO
# Provides:          openrtsp.sh
# Required-Start:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: openrtsp start stop script
# Description:       Starts and Stops openrtsp
### END INIT INFO

# /etc/init.d/openrtsp.sh
#
username=rtsp

       
case "$1" in
       start)
               su -c "/home/rtsp/aufnahme.sh &" ${username}
               ;;
       stop)
               #openrtsp stop
               #
                PROCESSID=$(ps aux | grep [o]penRTSP | awk '{print $2}')
               /bin/su -c "kill -HUP ${PROCESSID}" ${username}
               ;;
       restart)
               ${openrtsp} restart
               ;;
       *)
               echo "Usage: /etc/init.d/openrtsp.sh {start|stop}"
               exit 1
               ;;
esac

exit 0
vielen Dank
ren22
Zuletzt geändert von ren22 am 30.07.2014 13:13:47, insgesamt 3-mal geändert.

ren22

Re: init.d script Frage die x'te

Beitrag von ren22 » 29.07.2014 18:29:00

also entweder ist hier ein BUG oder ich weiss auch nicht ich habe die K01openrtsp.sh in K00openrtsp.sh umbenannt / verschoben das dann eigentlich vor der
K01sendsigs ausgeführt werden sollte bei einen reboot Befehl, selbst da bekomme ich kein PID zurück .... bekomme gleiche ein Anfall den ganzen Tag verschwende ich mit dem Mist hier schon
boah ey kotz *

gibt es eine Möglich zu loggen welche scripte in welcher Reihenfolge beim reboot ausgeführt werden ??

sorry

Benutzeravatar
detix
Beiträge: 1705
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: init.d script Frage die x'te

Beitrag von detix » 30.07.2014 09:30:51

Vorsicht, gefährliches Halbwissen!
In "Required-Start" steht bei dir nichts, was zum Starten vielleicht notwendig wäre, schau dazu mal hier [1] rein.
Es ist ein Aufnahme-Skript, dieses setzt eine Interverbindung voraus ($network), oder Alles ($all)?
Das Skript wird richtig einsortiert? ...Herauszufinden mit (root):

Code: Alles auswählen

insserv -vn
Passt es, dann einfach nur mal "insserv" ohne Parameter ausführen...
[1] https://wiki.debian.org/LSBInitScripts
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

wanne
Moderator
Beiträge: 7463
Registriert: 24.05.2010 12:39:42

Re: init.d script Frage die x'te

Beitrag von wanne » 30.07.2014 09:54:20

Du startest das Skript bevor du auf die Fesplatte oder den syslog zugreifen kannst. Wundert mich nicht, dass da nicht viel funktioniert. Würde mindestens mal das reinhängen:

Code: Alles auswählen

# Required-Start:    $local_fs $network
rot: Moderator wanne spricht, default: User wanne spricht.

ren22

Re: init.d script Frage die x'te

Beitrag von ren22 » 30.07.2014 12:57:52

Hi

Danke euch beiden für die Antworten, ich kann zu meiner Verteidigung sagen :lol: das, dass Script das erste war was ich probiert hatte. Im laufe der Zeit mit viel lesen
und anschauen von anderen init Scripts hatte ich das dann auch bemerkt das man die "Required-Start/Stop" Felder benötigt, die hatte ich auch später hinzugefügt aber
das Script wollte einfach nicht das machen was ich wollte. Die Lösung das Problems ist so banal als auch Abstrakt :facepalm: :

Code: Alles auswählen

PROCESSID=$(ps aux | grep [o]penRTSP | awk '{print $2}')
/bin/su -c "kill -HUP ${PROCESSID}" ${username}
......komischer Weise funktioniert das, wenn man es manuell ausführt ohne Probleme aber ist funktioniert einfach nicht als init Script, testet das mal selber wenn ihr mir nicht glaubt .... ich habe einfach die "ps" Abfrage abgeändert was ihr weiter unten im jetzt funktionierenden init Script sehen könnt ... warum immer die erste "ps" Abfrage Variante nicht als init Script Funktioniert: ich weiss es nicht :roll:


und hier das init Script welches soweit bei mir Funktioniert

Code: Alles auswählen

!/bin/sh
### BEGIN INIT INFO
# Provides:          openrtsp.sh
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: openrtsp start stop script
# Description:       Starts and Stops openrtsp
### END INIT INFO

# /etc/init.d/openrtsp.sh
#


username=rtsp

case "$1" in
       start)
               su -c "/home/rtsp/aufnahme.sh &" ${username}
               ;;
       stop)
               kill -HUP $(ps -fC openRTSP | sed '1d' |awk '{print $2}')
               ;;
       *)
               echo "Usage: /etc/init.d/openrtsp.sh {start|stop}"
               exit 1
               ;;
esac

exit 0
vielen Dank
ren22

Benutzeravatar
detix
Beiträge: 1705
Registriert: 07.02.2007 18:51:28
Wohnort: MK

Re: init.d script Frage die x'te

Beitrag von detix » 31.07.2014 10:32:15

ren22 hat geschrieben:...komischer Weise funktioniert das...
...wenn ihr mir nicht glaubt...
Ich glaub dir das schon, auch ohne es zu testen...

Du solltest vielleicht daran denken, das der Symlink /bin/sh auf /bin/dash verweist.
Der manuelle Test geschieht mit /bin/bash?
Beide haben eine etwas unterschiedliche Syntax.

Ändere doch mal die shebang-Zeile von "!/bin/sh" auf "!/bin/bash".
Gruß an alle Debianer, und immer daran denken:
Macht ohne Haftung funktioniert nicht!

Antworten