startscript

Florian

Registered User
hallo forum!

habe da ein kleines problem
wenn die jungs von server4you ein kernelupdate oder sonstiges machen wird ja der server neu gestartet.
nun is das problem das ich dann immer meinen zope server von hand starten muss...
wie kann ich das auch mit ins startscript eintragen?

danke schon mal für eure antworten

mfg florian
 
Hallo Florian,

bitte beachte die Forenregeln Punkt 3.

Natürlich kannst du jedes Programm beim reboot starten lassen. Du hast da zwei Möglichkeiten:

1.) Du legst ein Script in /etc/init.d/ . Schau dir mal die Startscripte an die dort schon liegen dann solltest du ziemlich leicht ein eigenes machen können. Dann gibst du dem Script die gleichen Rechte wie die anderen und fertig.

2.) Du machst einen Cronjob:
@reboot /usr/local/zope start

Du musst dann nur mein /usr/local etc durch den richtigen befehl zum Starten von Zope eingeben den du immer manuell eingibst.
 
bitte beachte die Forenregeln Punkt 3.

Ui ja ok.

Trotzdem schonmal vielen Dank für die schnelle Antwort.
Aber könnteste das nich noch ein wenig erläutern, blick da nich so durch... :(
Hab mir mal die bereits vorhandenen Scripte angesehen, dachte das wären nur so 5 Zeiler... :(

Vielen Dank schon mal

Mfg Florian
 
Hier ein Beispiel um den Befehl /usr/local/zope auszuführen:
Code:
#!/bin/sh

case "$1" in
'start')
        /usr/local/zope
        ;;
'stop')
        ;;
*)
        echo "Usage: $0 { start | stop }"
        ;;
esac
exit 0

Der Befehl /usr/local/zope ist nur erdacht, du musst du durch den "Richtigen" ersetzen. Dieses Script nennst du zb "zope" und sicherst es in /etc/init.d/ und gibst ihm Susführrechte: chmod +x /etc/init.d/zope
Nun wird beim Reboot des Servers der Befehl /usr/local/zope ausgeführt.
 
Ok vielen Dank schonmal!

Hab es jetzt mal soweit übernommen:

#!/bin/sh

case "$1" in
'start')
. /root/myzope/instance/bin/zopectl start
;;
'stop')
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0

Kann ich das so machen?
Wo kommt den die Variable $1 her die du da mit case abfrägst
Verstehe das Prinzip irgendwie gar nich :o

Mfg Florian
 
Da gibts ein init script mit dem man zope sogar stoppen kann ;) http://www.incunabulum.de/projects/computer_stuff/plone/setup_woody_initscript
Wo kommt den die Variable $1 her die du da mit case abfrägst
Beispiel:
Code:
devmode:~# cat ./Florian 
#!/bin/bash
echo \$0: $0
echo \$1: $1
echo \$2: $2
echo \$3: $3
echo usw bis \$9, bei mehr parametern muss man AFAIR mit shift arbeiten
devmode:~# ./Florian irgendwas "Text mit Leerzeichen" Fl*
$0: ./Florian
$1: irgendwas
$2: Text mit Leerzeichen
$3: Florian
usw bis $9, bei mehr parametern muss man AFAIR mit shift arbeiten
Jetzt überleg dir mal was $1 seien könnte wenn du dein script per "/etc/init.d/zope start" ausführst...
 
Last edited by a moderator:
Florian said:
Kann ich das so machen?
Hier noch eine kleine erweiterung:
Code:
 #!/bin/sh

case "$1" in
'start')
/root/myzope/instance/bin/zopectl start
;;
'stop')
/root/myzope/instance/bin/zopectl stop
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0

Und der "." vor dem '/root/myzope/instance/bin/zopectl start' muss weg
Mit dieser Erweiterung kannst du während des laufenden Serverbetriebes den Server starten und stoppen:
Starten => Auf der Console /etc/init.d/zope start
Stoppen => Auf der Console /etc/init.d/zope stop
Vorrausgesetzt du hast die Datei "zope" genannt.
Mit ein bisschen logischen Denken kannst du auch noch die Option "Restart" einbauen ;)
 
Vielen Vielen Dank schon mal für die vielen Postings!

Die Option Restart müsste ich jetzt eigentlich alleine hinbekommen... ;)
Bin heilt nicht so mit der Syntax da vertraut...
Ist das eigentlich Pearl?Oder womit schreibt man seine Shellscripte(Nennt man doch so, oder? :confused: )

Denoch gibts ein kleines Problemchen...
Habe alles so gemacht wie Du es beschrieben hast djrick.

Alles in datei zope in /etc/init.d/ angelegt, den Code rein (Momentan noch ohne Restart aber das dürfte ja egal sein)...Server rebooten lassen...Schwub Bad Gateway (Zopeserver nicht erreichbar) :( :(

Hilfe :confused:

Mfg Florian
 
Hier einmal der Code mit "restart"
Code:
 #!/bin/sh

case "$1" in
'start')
/root/myzope/instance/bin/zopectl start
;;
'stop')
/root/myzope/instance/bin/zopectl stop
;;
'restart')
/root/myzope/instance/bin/zopectl restart
;;
*)
echo "Usage: $0 { start | stop | restart }"
;;
esac
exit 0
Die Programmiersprache ist "Bash". Das ist quasi genau das was du auch auf der Console eingibst. Das ähnelt den *.bat Dateien aus MS DOS.

Wahrscheinlich hast du vergessen "chmod +x /etc/init.d/zope" einzugeben (vorrausgesetzt dein Script heisst zope). Damit gibst du dem Script die Rechte zu starten.
Zum testen führe es einfach mal per Hand aus mit /etc/init.d/zope start
Dannach sollte der Zope laufen. Wenn das funktioniert sollte es auch beim Reboot funktionieren.
 
Hallo!

Ja alles gemacht, habs jetzt um sicherzugehen nochmal gemacht...
Kann ihn auch durch manuellen Aufruf von /etc/init.d/zope start | stop starten oder stoppen :(
Komm mir grade irgendwie dumm vor... :eek:
Ich lass das Teil über mein Memberbereich auf vserver.de rebooten..nix..
:(
Ich weiss es ja auch nicht...

Mfg Florian und vielen Dankl
 
Du brauchst noch ein paar symbolische Links damit Linux weiß bei welchem Runlevel Zope starten und stoppen soll. Hängt teilweise von der Linux Distribution ab, ich persönlich mach sowas lieber per Webmin als per Hand ;)
Aber wenn du willst, so erstellst du die nötigen Links manuell bei Debian:
Code:
ln -s  /etc/init.d/zope /etc/rc0.d/K81zope
ln -s  /etc/init.d/zope /etc/rc1.d/K81zope
ln -s  /etc/init.d/zope /etc/rc2.d/S81zope
ln -s  /etc/init.d/zope /etc/rc3.d/S81zope
ln -s  /etc/init.d/zope /etc/rc4.d/S81zope
ln -s  /etc/init.d/zope /etc/rc5.d/S81zope
ln -s  /etc/init.d/zope /etc/rc6.d/K81zope
Wenn du Suse, Fedora oder RedHat hast musst du die URLs anpassen...
http://www.tuxhausen.de/kurs_init.html

btw und OT: Weiß jemand ob klogd bei einem vServer irgendwas sinnvolles tut? Er ist in der default s4u debianinstalation installiert aber ich weiß nicht warum :confused:
 
Last edited by a moderator:
hallo!

Danke HornOx für diesen informativen Post.
Nur ich bin mir nun nich so sicher was ich machen soll, will ja nix falsch machen...
Hab mir die Seite soweit durchgelesen.
schnipp....diese Verzeichnisse stehen entweder direkt in /etc/ (Debian) oder unter /etc/rc.d/(Mandrake, RedHat)....schnapp

Für mein RedHat könnte ich das ja dann so stehen lassen:

Code:
ln -s  /etc/init.d/zope /etc/rc0.d/K??zope 
ln -s  /etc/init.d/zope /etc/rc1.d/K??zope
ln -s  /etc/init.d/zope /etc/rc2.d/S??zope
ln -s  /etc/init.d/zope /etc/rc3.d/S??zope
ln -s  /etc/init.d/zope /etc/rc4.d/S??zope
ln -s  /etc/init.d/zope /etc/rc5.d/S??zope
ln -s  /etc/init.d/zope /etc/rc6.d/K??zope


Weiss nich was ich mit den Zahlen machen soll, laut der Seite definieren die die Reihenfolge..Blick das nich ganz

Vieleicht kann mir da noch einmal einer von euch Gurus helfen ;)

Mfg Florian
 
Nur ich bin mir nun nich so sicher was ich machen soll, will ja nix falsch machen...
Du kannst ganz entspannt bleiben, das schlimmste was passieren kann ist das dein Server nach einem Reboot nicht mehr ansprechbar ist und du deshalb eine Neuinstallation anfordern musst und dabei alle Daten verlierst :D
diese Verzeichnisse stehen entweder direkt in /etc/ (Debian) oder unter /etc/rc.d/(Mandrake, RedHat).
also:
Code:
ln -s  /etc/init.d/zope /etc/[b]rc.d/[/b]rc0.d/K??zope 
...
Weiss nich was ich mit den Zahlen machen soll, laut der Seite definieren die die Reihenfolge
Angenommen ich hab u.a. zwei Dateien namens /etc/rc2.d/S20mysql und /etc/rc2.d/S91apache2, dann würde das heißen das zuerst MySQL und erst danach Apache2 gestartet wird wenn Linux ins Runlevel 2 (also in den Normalbetrieb) wechselt; das wäre z.b. dann wichtig wenn Apache zum Starten unbedingt eine aktive MySQL Datenbank brauchen würde(ich weiß das das ein blödes Beispiel ist). Dein Zope sollte eigentlich egal sein wann es genau gestartet wird,irgendeine Zahl >20 und <99 sollte funktionieren.
 
Back
Top