Seite 1 von 1

'Beenden'-Button über die Linux-Shell erreichen ?

Verfasst: Dienstag 11. April 2006, 13:58
von snakeseven
Hi,
in meinem Script gibt es eine Funktion 'def beenden():', die ein 'root.destroy()' auslöst.
Da das Ding jetzt auf einem Server läuft, den ich nur noch per Shell erreiche, möchte ich das root.destroy() per Shellkommando auslösen. Geht das ?
Gruss, Seven

Verfasst: Dienstag 11. April 2006, 14:05
von modelnine

Code: Alles auswählen

kill -USR1 `PID`
zusammen mit einem entsprechenden Signalhandler für USR1 (siehe das signal-Modul, ist gut dokumentiert in der Python-Doku) der root.destroy() aufruft sollte gehen. Sonst: keine Chance, außer Du arbeitest mit xvnc oder was ähnlichem und löst das Event lokal = von einer verbundenen X-Session aus.

Re: 'Beenden'-Button über die Linux-Shell erreichen ?

Verfasst: Dienstag 11. April 2006, 19:02
von gerold
snakeseven hat geschrieben:Da das Ding jetzt auf einem Server läuft, den ich nur noch per Shell erreiche, möchte ich das root.destroy() per Shellkommando auslösen.
Hi Seven!

Das klingt jetzt sicher schon abgedroschen:

Prüfe in deinem Programm in einem eigenen Thread alle paar Sekunden ob eine Datei (z.B. /abc/stoppe_mich.txt) existiert. Wenn Ja, dann führe "root.destroy()" aus.

Das Shell-Kommando zum Stoppen deines Programmes lautet dann:

Code: Alles auswählen

touch /abc/stoppe_mich.txt
Beim Start deines Programmes solltest du dann aber auch eine eventuell noch vorhandene /abc/stoppe_mich.txt löschen, bevor du den Thread startest.

lg
Gerold
:-)

Verfasst: Dienstag 11. April 2006, 19:10
von modelnine
Danke für's erinnern Gerold, der einfachste Weg fällt mir natürlich nicht ein. ;-)

Verfasst: Dienstag 11. April 2006, 19:24
von snakeseven
Hi,
ich bin faul und hab mir jetzt ein kleines bash-script gebastelt:
#! /bin/sh
killall /home/EXEC/Modul_Handler
killall /home/EXEC/Modul_1
killall /home/EXEC/Modul_2
killall /home/EXEC/Modul_3
killall /home/EXEC/Modul_4
killall /home/EXEC/Modul_5
killall /home/EXEC/Modul_6
killall /home/EXEC/Modul_7
killall /home/EXEC/Send_MP3
Soll ja nur für den Notfall sein. Ansonsten sind die Scripte ja immer aktiv.
Danke aber !
Seven

Verfasst: Dienstag 11. April 2006, 19:26
von Python 47
Warum fragst du nach einer Lösung zu deinem Problem, wenn du diese Lösung dann doch nicht benutzt?

Verfasst: Dienstag 11. April 2006, 20:25
von snakeseven
Python Master 47 hat geschrieben:Warum fragst du nach einer Lösung zu deinem Problem, wenn du diese Lösung dann doch nicht benutzt?
Du hast völlig recht (*schäm*), aber ich habe von Bash-Scripten erst heute von einem Freund gehört. Ich bin noch nicht so fit in Linux und habe einfach zu kompliziert gedacht. Dennoch bin ich mir sicher, daß man die Tipps von Modelnine und Gerold an anderer Stelle gut gebrauchen kann ! Irgendwann steht bestimmt jemand wieder vor dem Problem (vieleicht ja ich selbst ?), per Shell-Command Einfluss auf seine Scriptausführung nehmen zu wollen.

Gruss, Seven

Verfasst: Dienstag 11. April 2006, 20:41
von Python 47
Das war auch nicht böse gemeint, mich hat es blos mal interresiert! :wink:

Verfasst: Dienstag 11. April 2006, 20:55
von gerold
modelnine hat geschrieben:Danke für's erinnern Gerold, der einfachste Weg
Hi modelnine!

Das war gar nicht so gemeint. :? Ich dachte nur daran, wie es auch unter Windows funktionieren könnte.

lg
Gerold
:-)

Verfasst: Dienstag 11. April 2006, 21:12
von modelnine
Das war gar nicht so gemeint.
Dann haste meinen Kommentar falsch verstanden. ;-)

Es ging mir nur darum, dass es natürlich immens einfacher ist einfach zu gucken ob eine bestimmte Datei da ist oder eben nicht, als dass man sich die ganzen Dinge antut die mit Signal-Behandlung zu tun haben. Ich bin im Moment dabei einen Daemon in Python zu implementieren, deswegen hab ich mir über solche Dinge auch Gedanken gemacht (bzw. mache sie mir im Moment), und da gabs halt als einzige sinnvolle Lösung nur die Signale. Aber dafür, was snakeseven machen will reicht die Möglichkeit mit einer Signaldatei allemal. Wie gesagt, eher ein Fall von: "man sieht den Wald vor lauter Bäumen nicht..." ;-)