Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Root Prozesse im Hintergrund ausfuehren?



sutterp
19-04-2001, 10:36
Guten Tag,

Auf meinem System soll eine bash Script <myscript> 'on demand' ablaufen. Die Script behandelt verschiedenen Dateien und fuehrt privilegierte Kommandos aus, sie muss deshalb unter root ablaufen.

Dies erreiche ich mit einer zweiten Script, <startscript>. startscript besteht aus einer Zeile, naemlich

su - root -c "myscript >~/myscript.log 2>&1 &"

Wenn ich nun startscript aufrufe, werde ich fuer das Superuser Passwort gefragt, und startscript started myscript. myscript lauft nun direkt unter init, das heisst ich kann das Terminal Window schliessen oder mich sogar vom system ausloggen und myscript laeuft trotzdem weiter. Dies ist genau was ich erreichen wollte.

Faul wie ich bin, moechte ich nicht jedesmal ein Terminal Window eroeffnen und startscript eintippen muessen. Deswegen habe ich auf dem Desktop ein .kdelink installiert, so dass ich nur mit der Maus draufclicken kann. Dies funktioniert leider nicht.

Was passiert ist dass ein Terminal Window eroeffnet wird und mich fuer das Superuser Passwort fragt. Wenn dies eingegeben ist, started startscript myscript korrekt, myscript beginnt auch zu laufen, aber jetzt wird das Terminal Window von KDE/KFM geschlossen und erinnert sich irgendwie, dass da auch myscript unter init laeft, killed myscript und schliesst das Terminal Window.

Ich hab dann ein sleep 180 hinter das su Kommando eingefuegt, um mit ktop die Prozesshierarchie festzustellen.

Ist der Prozess mit .kdelink gestarted worden, so gilt
Init - Kfm - Konsole - sh - sleep fuer startscript,
Init - myscript - Kommando fuer myscript

Ist der Prozess jedoch von einem Terminal Window gestarted worden, so gilt
Init - Kfm - Konsole - bash - bash - sleep fuer startscript,
Init - myscript - Kommando fuer myscript

Frage: Was muss ich aendern um das gewuenschte resultat zu erreichen?

Vielen Dank fuer die Hilfe

pitu
19-04-2001, 10:41
Warum laesst du es denn nicht vom bootprozess starten, dann brauchst du es nochnichtmal ausfuehren?

thorsten

sutterp
19-04-2001, 23:27
Die Script soll ja nur wenn benoetigt ablaufen, nicht nur einmal beim booten des systems, d.h. der Benuetzer bestimmt wann die Script ausgefuehrt werden soll. Dies kann mehrmals taeglich sein.

pitu
20-04-2001, 08:57
Ahhja, hmmm, was soll eigentlich passieren? Ich wuerde das script in diesem Fall einfach von cron aufrufen lassen.

Bau in "myscript" entsprechende Abfragen ein, dass es nur laufen soll wenn das und das, und lass es von root als cron aufrufen. dann sparst du dir die passworteingabe und dass du ueberhaupt dran denken musst.
So alle 10 minuten oder so.

thorsten

jgbauman
20-04-2001, 10:10
Wenn der user dennoch den Zeitpunkt der Ausfuehrung bestimmen muss, dann hilft vielleicht auch sudo (Ausfuehrung als root, fuer spezielle Benutzer auch ohne password) auf das eigentliche Skript, dass dann mit nohup sudo skript.sh & gestartet wird.
Eventuell Vorsicht bei gleichzeitigem starten mehrerer Instanzen des Skriptes ;-)