View previous topic :: View next topic |
Author |
Message |
Obelix Tux's lil' helper
Joined: 22 Aug 2011 Posts: 100
|
Posted: Sun Sep 02, 2012 10:15 pm Post subject: Script als init-Script ausführen |
|
|
Hi,
im Handbuch zu gentoo steht, man solle kein Script in einem init-Script starten, das dann Services startet und sich selbst beendet.
Jetzt habe ich halt genau das Problem:
Ich nutze eine Software, die nicht per Portage und fertigem init-Sctipt kommt, aber selbst ein Script mitbringt, das alles startet und alle Variablen setzt, die gesetzt sein müssen. Das Script ist auch nicht gerade kurz, sodass es nicht wirklich einfach wäre zu sagen, man kopiert eben alles in ein init-Sctipt um.
Gibt es einen sauberen Weg, wie ich ein init-Script schreibe, das eigentlich nur ein shell Script startet? Und am besten wäre es, wenn das dann auch mit "stop" und "restart" klappen würde.
Ich habe es vor einigen Monaten schon mal versucht, einfach aufzurufen, aber ein stop ging dann nicht, geschweige denn ein restart. Und bevor ich wieder ewig dran hinbastle dachte ich, ich frag mal nach, ob mir da jemand den richtigen Weg weisen kann...
Danke an alle, die sich Gedanken machen...
Obelix _________________ read my lips: NO MORE BUGS!! |
|
Back to top |
|
|
schotter Guru
Joined: 30 Nov 2004 Posts: 497 Location: Germany, Bavaria, Bayreuth, Pottenstein, Tüchersfeld
|
Posted: Mon Sep 03, 2012 9:37 am Post subject: |
|
|
Hi,
ich denke http://www.gentoo.org/doc/en/openrc-migration.xml koennte dein Freund sein bzw. etwas genauer:
Quote: | local.start and local.stop
With OpenRC, /etc/conf.d/local.start and local.stop are deprecated. During the migration to OpenRC, the files are moved to /etc/local.d and gain the suffix .start or .stop. OpenRC then executes those in alphabetic order. |
Aber ein start-stop-Skript ist das natuerlich auch nicht, vllt aber ein Anfang^^ |
|
Back to top |
|
|
slick Bodhisattva
Joined: 20 Apr 2003 Posts: 3495
|
Posted: Thu Sep 13, 2012 5:07 pm Post subject: |
|
|
Das nachfolgende ist ein minimales Initscript. Das bastelst einfach für dein Programm um. Wichtig ist das der Programmaufruf in stop() das Programm auch wieder vollständig stoppt. depend() ist IMHO optional, kannst aber mit Abhängigkeiten befüllen. chmod +x nicht vergessen. restart() brauchst nicht angeben wenn er einem stop() + start() entspricht, das machst das initscript selbst. Ansonsten schau dir andere initscripts an wie du das reinfummelst.
Code: | #!/sbin/runscript
depend() {
need XXX
use XXX
}
start() {
ebegin "Starting MyProgram"
#startscript aufrufen
eend $?
}
stop() {
ebegin "Stopping MyProgram"
#stopscript aufrufen
eend $?
} |
|
|
Back to top |
|
|
Obelix Tux's lil' helper
Joined: 22 Aug 2011 Posts: 100
|
Posted: Thu Sep 13, 2012 5:27 pm Post subject: |
|
|
danke für die Tipps. Das mit dem Init-Script an und für sich ist mir schon klar. Trotzdem Danke!
Vielleicht habe ich mich zu ungenau ausgedrückt. Ich versuchs nochmal:
Für die Steuerung von KNX/EIB Hausautomatisierungssystemen haben schlaue Menschen eine Software geschrieben (OpenRemote). Einer von ihnen hat eine Serverkomponente gemacht, die mit dem System kommuniziert. Dieser "Server" benötigt viele Komponenten, von denen eigentlich alle mitgebracht werden. Um diesen Server zu starten gibt es ein Script, das hat 368 Zeilen. Man startet es mit Parameter, z.B. "run" (dann bleibt es in der shell stehen), oder "start" (damit läuft es im Hintergrund) und "stop" (damit beendet man den Hintergrundprozess)
Wenn ich im gentoo Initscript wiederum dieses Script aufrufe, dann geht das nicht. Es heißt auch in der gentoo doku, dass man keine anderen Scripte aufrufen soll.
Jetzt wäre meine Hoffnung gewesen, dass findige Köpfe vielleicht einen Trick kennen, wie man es doch schafft sauber (sic!) ein anderes Script aufzurufen. Denn ich möchte nur ungerne das 368 Zeilen lange Sctipt zerlegen und in ein Init-Script packen. Zumal dieses Script mit relativen Pfaden arbeitet, und ich dann alles umschreiben müßte...
Gruß
Obelix _________________ read my lips: NO MORE BUGS!! |
|
Back to top |
|
|
bell Guru
Joined: 27 Nov 2007 Posts: 510
|
Posted: Thu Sep 13, 2012 6:12 pm Post subject: |
|
|
Wird das Skript manuell als ein User oder als root aufgerufen?
Als root: Mache mal in Deinem Skript folgendes rein Code: | source /etc/profile
/deinscript start | rein. Damit hast Du schonmal alle Umgebungsvariablen für das Skript verfügbar, falls irgend was davon benötigt wird.
Damit es als User läuft etnsprechend: Code: | su -lc 'source /etc/profile; /deinscript start' deinscriptuser |
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|