Ein Skript soll ein anderes beenden..

T

Till

Grünschnabel
Hallo,

ich versuche meinem Script gerade eine Update-Funktionalität beizubringen.

Ich versuche es mal so zu erklären:

Aus dem Script 1 wird das Script 2 aufgerufen.
Wenn Script 2 gestartet ist, soll Script 1 beendet werden.
Wenn Script 2 sein Update verrichtet hat soll das neue Script gestartet werden.

Script 1 : ist das eigentliche Hauptprogramm.
Script 2 : ist mein Update-Helfer, der mir das Update holt und installiert.


Ich habe versucht im Script 2 mittels

kill `ps aux | grep 'cript1.sh' | cut -b 10-15`

das Script1 zu beenden, aber irgendwie funktioniert das nicht so...


Habt ihr einen heißen Tipp für mich.

Gruß
Till
 
Versuchs mal mit 'pkill Scriptname'...
man pgrep
man pkill

Gruss
d22
 
Ich mag mich täuschen und es ist auch noch sehr früh *g
Aber macht das wirklich Sinn seinen "Papa"-Prozess abzuschießen?
 
Hm, ja ist wirklich noch früh... ;)
Verstehe nämlich nicht wen und was du ansprichst, weder 'pkill' noch 'ps aux | grep 'cript1.sh' | cut -b 10-15' holt dich die PPID, beide geben die PID zurück. Oder sollte ich mich getäuscht haben?

Gruss
d22
 
Zuletzt bearbeitet:
Mußt Du Script 1 wirklich vorher beenden ? Sonst könntest Du doch auch mit "wait" auf die Beendigung von Script2 warten und dann einfach "exit" ?

Heiko
 
Ich glaub ich hab ne Blockade im Kopf *lach*
Angenommen der pstree sieht so aus:

Code:
init---...
     |
     |--script 1---script 2
     |              |--update irgendwas
     |
     ...

Und du killst die pid von script 1 - ist es dann nicht auch vorbei mit script 2?
Oder läuft das völlig losgelöst? Ich glaube ich habe unrecht, will jedoch den AHA-Effekt bzw. den Ach-Ja-Stimmt-Effekt erleben :D
 
Wenn sich der Parentprozess selbst beendet ohne auf sein Kind :) zu warten, erzeugst du einen netten Zombi. :D
 
Na wenn 'script1' 'script2' aufruft und nacher 'script1' gekillt wird, dann läuft 'script2' frisch und fröhlich weiter, es gehört nacher einfach dem init-prozess... PPID 1...

Oder nicht?
 
Na wenn 'script1' 'script2' aufruft und nacher 'script1' gekillt wird, dann läuft 'script2' frisch und fröhlich weiter, es gehört nacher einfach dem init-prozess... PPID 1...

Aber nur wen du es loslöst oder?

Mein Gedanke geht in Richtung

Script1 ruft "Script2 &disown" auf
 
Das 'script2' wird dann ganz von alleine 'losgelöst'...
Ist nicht die feine Art, aber klappt schon...
 
Warum soll Script1 überhaupt beendet werden?
Ist es linear runterprogrammiert und soll einfach nochmal am Anfang beginnen etwas auszuwerten o.ä.? Falls ja, würde ich das über Funktionen und Rückgabewerte handhaben, damit fährst Du sicherlich besser.
 

.
|--control-script
| |--setup-script
| |--update-script
|
.


Würde es so gehen?

Das Control-Script ruft direkt das Setup-script auf.
Wähle ich im Setup-Script meine Menü zum Updaten aus,
dann beendet sich das setup-script mit exit <n>.
Jetzt bin ich ja wieder im control-script und kann
den exit <n> Status auswerten.
Habe ich dann mein Update eingespielt, so starte ich
wieder das setup-script.

Zu umständlich ????
So schiesse ich keine Prozesse ab, und habe auch keine Ghost´s oder...


Gruß
Till
 

Ähnliche Themen

Skript soll nicht doppelt laufen... kill pkill pid cron

Mein erstes größeres Skript.

eingaberoutine in bash - space mit read

Bash Script, Log ausgabe friert ein.

StartScript für Serverprogramm

Zurück
Oben