Trojaner-Board

Trojaner-Board (https://www.trojaner-board.de/)
-   Alles rund um Mac OSX & Linux (https://www.trojaner-board.de/alles-rund-um-mac-osx-linux/)
-   -   eigenes /etc/init.d Script startet manuell aber nicht beim Systemstart (https://www.trojaner-board.de/99038-eigenes-etc-init-d-script-startet-manuell-beim-systemstart.html)

cosinus 13.05.2011 17:54

eigenes /etc/init.d Script startet manuell aber nicht beim Systemstart
 
Hello World!

hab da heute auf einer unserer virtuellen (Xenserver) Maschinen mit Debian Lenny 64-Bit ein eigenes Script - nennen wir es SCRIPT - in /etc/init.d gelegt - über

Code:

# /etc/init.d/SCRIPT start
# /etc/init.d/SCRIPT stop
# /etc/init.d/SCRIPT restart
# /etc/init.d/SCRIPT check

kann ich starten, stoppen, neustarten und den Status abfragen. Funktioniert soweit alles prächtig, wenn man selbst hand anlegt.
Also hab ich mittels

Code:

# update-rc.d SCRIPT defaults
die Symlinks in den Ordner /etc/rc?.d anlegen lassen, die eben auf SCRIPT in /etc/init.d verweisen. Die Symlinks liegen auch alle richtig und selbstverständlich sind diese sowie SCRIPT selbst auch ausführbar.

Nun zum Problem: Beim Systemstart ist der Prozess, der durch das Script eigentlich starten sollte nicht aktiv. Manuell läuft aber alles gut.

Hat einer eine Idee woran das liegen kann?
Ich will erstmal nicht den Inhalt von SCRIPT posten, falls das unbedingt nötig ist werd ich es aber tun ;)

Karaya 13.05.2011 20:35

Hi,

gleich vorweg: ich kenne mich mit Debian-Distris nicht sonderlich aus, aber ich denke du musst dein Script einem Runlevel zuordnen.
Das heißt, legst du dein Script z.B. in "/etc/rcS.d/SCRIPT" ab, wird es beim booten ausgeführt.

Ist hier ziemlich gut beschrieben. URL="hxxp://wiki.ubuntuusers.de/dienste"]hxxp://wiki.ubuntuusers.de/dienste

Karaya

cosinus 13.05.2011 20:42

Hallo Karaya und danke für deine Antwort.

Ich hab die runlevels im initscript deklariert (LSB-style-header) als Beispiel hier aus /etc/init.d/skeleton aus dem Ubuntu mit dem ich diese Zeilen gerade tippe:

Code:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          skeleton
# Required-Start:    $remote_fs $syslog
# Required-Stop:    $remote_fs $syslog
# Default-Start:    2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Example initscript
# Description:      This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

update-rc.d wertet diese Zusatzinfos aus und erstellt automatisch die Symlinks in die richtigen /etc/rc?.d Verzeichnisse.
Sie liegen da auch korrekt drin, ich habs kontrolliert :confused: trotzdem läuft es nicht beim Systemstart :balla:

Edit: Ich glaube langsam es liegt an der Eigenart des Programms selbst was ich starten will. ich werd das mal mit einem Kollegen von mir am Montag klären, vllt hat der noch eine Idee.
Wenn Du oder irgendjmd anders noch eine Idee habt, so scheut euch nicht diese zu posten :)

Edit2: Den Weg über /etc/rc.local und /etc/inittab bin ich auch schon gegangen. Läuft nicht. :mad:
rc.local wird zwar ausgeführt, aber nicht der Befehl den ich will. Ein einfaches mkdir /root/test macht er. Aber den befehl den ich will, noway :killpc:
Über inittab sagt er mir ständig "respawning too fast..." ... deswegen dachteich ich bin mit dem "normalen" init.d-Weg da besser beraten :schrei:

Karaya 13.05.2011 21:08

Naja, ich hab's mir fast gedacht. Hab auch nur geantwortet, weil ich kurz vorher zufällig auf dieser Ubuntu-Seite war.

Ich arbeite mit CRUX (kennt kaum jemand :heulen:) und da werden Dienste einfach völlig anders behandelt.

Wenn du also "alles richtig" gemacht hast, liegt das Problem vielleicht an deinem Script. Ich will dein Script jetzt nicht sehen, aber vielleicht kannst du erklären, was dein Script tun soll.
Klar sollte auch sein, dass dein Script zu einem sehr frühen Zeitpunkt ausgeführt wird. Wenn du also Programme oder ähnliches startest die Lib's brauchen die zu diesem Zeitpunkt noch nicht geladen sind, dann wird es, beim Booten, nicht funktionieren.

Karaya

cosinus 13.05.2011 21:13

Naja sowas dachte ich auch schon.
Hab in meinem Script ein sleep 10 eingebaut, half nicht.
Hab es vor update-rc.d manuell symverlinkt in rc2.d als S99!!! und es startete nicht wie gewollt!

in /etc/rc.local ging es auch nicht! :eek:

Karaya 15.05.2011 21:04

"respawning too fast..." bedeutet, du möchtest auf etwas zugreifen das es nicht gibt.

Wenn dein Script aus deinem Account heraus funktioniert, als Daemon aber nicht, kann es sein, dass du die Pfade nicht komplett angegeben hast, weil er die zu diesem Zeitpunkt noch nicht kennt (die /etc/profile wurde noch nicht gelesen).

Dass es aus rc.local nicht funktioniert ist merkwürdig, weil zu diesem Zeitpunkt die /etc/profile eigentlich gelesen sein sollte - zumindest ist das bei Archlinux und Crux der Fall.

Welchen Befehl willst du denn ausführen ?

Karaya

cosinus 16.05.2011 09:27

Ich will ein Programm starten, das im Hintergrund bestimmte Routingaufgaben erfüllen soll. Soweit mir bekannt liefert der Hersteller nur die ausführbare Datei, den Rest muss man sich selbst einrichten.

In der Zwischenzeit hab ich mal zum Beobachten einige Logausgaben in SCRIPT in /etc/init.d eingebaut. Das Script wird schon korrekt gestartet beim Systemstart, nur eben der eigentliche Befehl nicht...nur wenn ich manuell an der Konsole ein /etc/init.d/SCRIPT start ausführe läuft das Programm wie es soll...


Edit: ich glaub ich habs.
Den eigentlichen Befehl zum Starten des Programms musste ich etwas erweitern, statt STARTBEFEHL unter start) in SCRIPT muss man mit su - root -c "STARTBEFEHL" das Programm starten :headbang:
Was genau bewirkt das, wenn ich root bin, starte ich nochmal etwas als root? :eek:
Bin ich jetzt nur draufgekommen, weil andere wohl ähnliche Probleme hatten, die das aber nicht als root, sondern irgendeinem adminuser starten wollten....

cosinus 16.05.2011 14:46

Wie auch immer, es läuft jetzt.
Danke für die Antworten. :dankeschoen:

Ganz offensichtlich muss man dieses Programm explizit mit einem User starten, deswegen das "su - root -c" vor dem befehl. Nur der Befehl im initscript funktioniert nur wenn man es manuell startet.

cosinus 16.05.2011 23:12

Gedankennotiz für mich: prüfen ob das Teil auch ohne root laufen kann. Mit vollen rechten hab ich immer Bauchschmerzen :pfeiff:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:38 Uhr.

Copyright ©2000-2024, Trojaner-Board


Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28