HP-Fan
Anmeldungsdatum: 2. September 2012
Beiträge: 394
Wohnort: Schweiz (CH)
|
Hallo Leute Ich habe mal wieder viel im Wiki gewühlt und auch Threads von hier ausgegraben...
Das ich hier bin bedeutet, dass es nicht geklappt hat... Von Anfang an:
Im Terminal gebe ich für gewöhnlich...
...ein und das Pythonprogramm läuft. Jetzt habe ich im Terminal...
...eingegeben und ein Fenster mit Titel "Startprogramme" öffnet sich auf dem Schreibtisch. Da ich MeinProgramm schon hinzugefügt habe, kann ich dort auf "Bearbeiten" klicken. Bei Name steht "MeinProgramm" Bei Befehl steht "gnome-terminal --command=/home/xyz/Schreibtisch/./MeinProgramm.py Bei Befehl hatte ich auch schon "gnome-terminal --command=/home/xyz/Schreibtisch/MeinProgramm.py Oder Variationen mit -x
Nach einem Neustart des Rechners passiert aber gar nichts.
Gewollt wäre, dass der Computer, nach dem Einschalten und dem Anmelden, automatisch MeinProgramm im Vordergrund startet.
Zur Info: MeinProgramm ist ein Python3-Programm, welches die GUI benötigt (Es benutzt tkinter). Ich habe irgendo in der Befehlszeile einen Fehler. Bei Windows war das früher nicht ",R" für RUN oder exec. für Execute??? Gruß HP-Fan
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12821
|
HP-Fan schrieb:
Ich habe irgendo in der Befehlszeile einen Fehler. Bei Windows war das früher nicht ",R" für RUN oder exec. für Execute???
Oder Du hast einen Fehler im Skript, z.B. eine Shebang-Zeile ohne absoluten Pfad. Wie sieht die Zeile aus?
|
HP-Fan
(Themenstarter)
Anmeldungsdatum: 2. September 2012
Beiträge: 394
Wohnort: Schweiz (CH)
|
Hallo rklm Die Shebang...
...hat eigentlich manuell im Terminal immer funktioniert... Gruß HP-Fan
|
HP-Fan
(Themenstarter)
Anmeldungsdatum: 2. September 2012
Beiträge: 394
Wohnort: Schweiz (CH)
|
Hallo Forums-Gemeinde Ich habe die Variante mit Einzelbefehlen genutzt. Die Befehlszeile im Fenster
"Startprogramme / Startprogramm bearbeiten" lautet:
| gnome-terminal -x sh -c 'cd Schreibtisch; ./MeinProgramm.py; exec bash'
|
Zwischen den Semikola kann man Einzelbefehle, wie live im Terminal unterbringen und mit "exec bash" ausführen.
Mit dieser Schreibweise kann ich mich anfreunden. ☺ Gruß HP-Fan PS. Jetzt funktioniert es. Ich dachte schon ich muss die ganze Nacht mit den .desktop-Dateien und den rc-Dingens "herumeiern"... 😀 Danke dir trotzdem 👍
|
ChickenLipsRfun2eat
Anmeldungsdatum: 6. Dezember 2009
Beiträge: 12067
|
Hallo! Man kann Scripte auch "global" verfügbar machen, wenn man sie in ~/bin speichert (oder einen Pfad seiner Wahl in die $PATH-Variable einträgt). Siehe Umgebungsvariablen.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
HP-Fan schrieb: Hallo Forums-Gemeinde Ich habe die Variante mit Einzelbefehlen genutzt. Die Befehlszeile im Fenster
"Startprogramme / Startprogramm bearbeiten" lautet:
| gnome-terminal -x sh -c 'cd Schreibtisch; ./MeinProgramm.py; exec bash'
|
Das sieht aber sehr nach Ballast aus. Muss Dein Programm denn in einem bestimmten Verzeichnis starten, weil es lokal Daten, Bilder, weiteren Code erwartet, der als relativer Pfad gesucht wird? Dann wäre es besser im Programm eine Variable Programmpfad zu haben, die ja per default "." sein könnte, die man aber von außen auch setzen könnte: | MeinProgramm.py /home/xyz/Schreibtisch
|
Das Gnome-terminal sollte ja schon einen Interpreter mitbringen. Da noch "sh" zu übergeben ist schon merkwürdig. MeinProgramm.py hat dann einen Shebang und startet einen Interpreter im Interpreter im Interpreter. Das "exec bash" dient wozu? Das verstehe ich noch nicht. Das Pythonprogramm startet und danach eine Shell, während das Pythonprogramm noch läuft? Mit Shebang sollte ein MeinProgramm.py reichen, wenn es im PATH zu finden ist (daher ~/bin/) und sonst /home/xyz/Schreibtisch/MeinProgramm.py, wenn es nicht vom Verzeichnis, aus dem man es startet abhängig ist. Allerdings benutze ich Xfce4, nicht gnome, und kann es nicht ausprobieren.
|
rklm
Projektleitung
Anmeldungsdatum: 16. Oktober 2011
Beiträge: 12821
|
HP-Fan schrieb:
Die Shebang...
...hat eigentlich manuell im Terminal immer funktioniert...
Je nun. Das Problem ist, dass diese Variante davon abhängt, dass $PATH korrekt gesetzt ist. Sicherer ist HP-Fan schrieb:
Ich habe die Variante mit Einzelbefehlen genutzt. Die Befehlszeile im Fenster
"Startprogramme / Startprogramm bearbeiten" lautet:
| gnome-terminal -x sh -c 'cd Schreibtisch; ./MeinProgramm.py; exec bash'
|
Zwischen den Semikola kann man Einzelbefehle, wie live im Terminal unterbringen und mit "exec bash" ausführen.
Mit dieser Schreibweise kann ich mich anfreunden. ☺
Was soll das exec bash am Ende? Dann bekommst Du eine interaktive Shell, nachdem das Python-Programm beendet ist. gnome-terminal hat auch eine Option für das aktuelle Verzeichnis.
PS. Jetzt funktioniert es. Ich dachte schon ich muss die ganze Nacht mit den .desktop-Dateien und den rc-Dingens "herumeiern"... 😀
Wie sieht denn die funktionierende Lösung aus?
|
HP-Fan
(Themenstarter)
Anmeldungsdatum: 2. September 2012
Beiträge: 394
Wohnort: Schweiz (CH)
|
Hallo @all Also es ist so, dass mit...
gnome-terminal -x sh -c 'cd Schreibtisch; ./MeinProgramm.py; exec bash'
auf dem "mothersystem" Tower PC mit Ubuntu 16.04 darauf, der Rechner hoch bis in das Python3-Programm fährt.
Dort läuft unsichtbar im Hintergrund ein Terminalfenster und im Vordergrund steht das Python3-Programm.
Das Programm ist quasi im Kiosk-Mode. Beendet man es, fährt auch der ganze Rechner herunter.
Ich brauche das Terminalfenster im Hintergrund, weil hier und da Informationen vom System gefragt sind. Also auf dem mothersystem tut die Software genau das, was sie soll. Die Befehlszeile oben habe ich übrigens aus dem Internet gezogen. Mir ist nicht gantz klar, was die einzelnen Optionen/Parameter bewirken.
Ich denke das: -x heisst starten sh weiss ich nicht (müsste ich nachschauen...) -c weiss ich auch nicht (müsste ich nachschauen...) Terminal Befehl "cd" ist klar->change Directory / Verzeichniswechsel exec bash sollte ein Ausführen der Befehle bewirken ->execute (ich stell mir da die Return-Taste vor)
Ich habe MeinProgramm.py jetzt für den Raspberry (Client-system) angepasst und es läuft dort genau so, wie erwartet. Nur bekomme ich es noch nicht hin, dass MeinProgramm.py ebenfalls beim Start des
Raspi's los läuft. Gemacht habe ich folgendes:
| sudo apt install gnome-session-bin
|
und | gnomie-session-properties
|
Jetzt ist MeinProgram.py, da ich es nun eintragen konnte, zwar im Autostart, aber die Befehlszeile vom Ubuntu: | gnome-terminal -x sh -c 'cd Schreibtisch; ./MeinProgramm.py; exec bash'
|
...funktioniert da nicht. Auf dem Raspi läuft Ubuntu Mate. Gibt es da unterschiede beim Start-Befehl? Gruß HP-Fan
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
HP-Fan schrieb: Hallo @all Also es ist so, dass mit...
gnome-terminal -x sh -c 'cd Schreibtisch; ./MeinProgramm.py; exec bash'
auf dem "mothersystem" Tower PC mit Ubuntu 16.04 darauf, der Rechner hoch bis in das Python3-Programm fährt.
Dort läuft unsichtbar im Hintergrund ein Terminalfenster und im Vordergrund steht das Python3-Programm.
Das Programm ist quasi im Kiosk-Mode. Beendet man es, fährt auch der ganze Rechner herunter.
Ich brauche das Terminalfenster im Hintergrund, weil hier und da Informationen vom System gefragt sind.
Aha. Das ist eine wichtige Information. Wenn mir auch nicht klar ist, wie ein unsichtbares Terminal im Hintergrund Informationen vom System ... ? Holst Du das Programm dann ab und zu in den Vordergrund, um Befehle einzugeben? Um Dir Ausgaben des Pythonprogramms anzusehen? Wäre vielleicht ein Logfile besser geeignet für die Aufgabe? Bleibt es immer unsichtbar?
Die Befehlszeile oben habe ich übrigens aus dem Internet gezogen. Mir ist nicht gantz klar, was die einzelnen Optionen/Parameter bewirken.
Ich denke das: -x heisst starten sh weiss ich nicht (müsste ich nachschauen...) -c weiss ich auch nicht (müsste ich nachschauen...) Terminal Befehl "cd" ist klar->change Directory / Verzeichniswechsel exec bash sollte ein Ausführen der Befehle bewirken ->execute (ich stell mir da die Return-Taste vor)
Nicht ganz. Der Aufruf gnome-terminal startet das Programm interaktiv, -x ist ein Schalter, der besagt, dass jetzt ein Befehl kommt, der eXekutiert werden soll. Dieser Befehl ist bei Dir: sh -c 'cd Schreibtisch; ./MeinProgramm.py; exec bash'
Dabei ist sh ein Shellaufruf (/bin/sh), auf Linuxsystemen üblicherweise ein symbolischer Link auf eine Shell wie dash, könnte aber auch bash oder zsh oder etwas anderes sein, je nach Defaulteinstellungen der Distribution/Version oder Anpassungen des Users. Oft bedeutet das auch, dass die Shell nicht mit den gleichen Optionen/Parametern gestartet wird, wie wenn man die Shell (dash/bash/zsh) direkt aufruft. Für diese Shell wird mit -c wiederum ein Kommando mitgegeben, das ausgeführt werden soll, und das ist bei Dir 'cd Schreibtisch; ./MeinProgramm.py; exec bash' also die Verkettung von 3 Kommandos, die durch Semikolons voneinenandeer getrennt sind, also sequentiell gestartet werden. Erst Wechsel in das Verzeichnis, dann Start des Pythonprogramms, dann Bashaufruf. Wenn sich das Pythonprogramm von der aufrufenden Shell abkoppelt, dann kann der Bashaufruf auch schon gestartet werden, während das Pythonprogramm noch läuft - sowas ist eher selten, aber kommt vor. Vielleicht hast Du schon öfter grafische Programme aus der Shell gestartet. Wenn Du gimp oder inkscape in der Shell aufrufst, starten die Programme, aber die Shell ist blockiert, bis das Programm beendet wird, außer Du startest die Programme mit gimp & im Hintergrund. Wenn Du dagegen gedit aufrufst, dann koppelt sich das Programm von der Shell ab, und Du hast gleich wieder den Prompt zur Verfügung und kannst weitere Befehle ausführen.
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
HP-Fan schrieb: Jetzt ist MeinProgram.py, da ich es nun eintragen konnte, zwar im Autostart, aber die Befehlszeile vom Ubuntu: | gnome-terminal -x sh -c 'cd Schreibtisch; ./MeinProgramm.py; exec bash'
|
...funktioniert da nicht. Auf dem Raspi läuft Ubuntu Mate. Gibt es da unterschiede beim Start-Befehl?
"Die Befehlszeile funktioniert nicht" ist eine schwache Fehlermeldung. Bekommst Du eine Fehlermeldung, vielleicht in einem Logfile? Ich habe kein Ubuntu-Mate und kein Raspi, um Dir genau zu sagen, in welchem Logfile Du schauen musst, aber 'ls -l /var/log/*' sollte ein Listing aller Logfiles zeigen, und da dann nach Datum/Uhrzeit schauen, um nach den jüngsten zu filtern, per Namen Sachen auszuschließen wie cups (Druckerdämon) könnte schon weiterhelfen. Mit Kioskmode kenne ich mich auch nur oberflächlich aus. Ich denke, da sollte man auch direkt das Pythonprogramm angeben können, aber ohne einen Schimmer, was mit "weil hier und da Informationen vom System gefragt sind" gemeint ist, hilft das auch nicht weiter.
|
Planspiel
Anmeldungsdatum: 2. Mai 2016
Beiträge: 673
Wohnort: Spielplan
|
Mir ist nicht ganz klar, warum man bei Mate das Gnome- und nicht das Mate-Terminal benutzt. Ist das gnome-terminal bei Mate vorinstalliert oder wird das bei gnome-session-bin/-properties mit gezogen? Und Mate hat keine eigene Möglichkeit um Programme automatisch zu starten?
|
HP-Fan
(Themenstarter)
Anmeldungsdatum: 2. September 2012
Beiträge: 394
Wohnort: Schweiz (CH)
|
Hallo Planspiel Ja, das ist mir erst hinterher eingefallen. Wenn ich hier die aktuellen Computerprobleme gelöst habe (siehe im Unity-Bereich), kümmere ich mich dann um diesen Thread hier. Ich muss wahrscheinlich das gnome-terminal wieder mit purge entfehrnen, und dann das Mate-Termial suchen/finden/installieren - je nach dem was da los ist. Aber du hast recht: Das Gnome und das Mate ist ja gerade der Unterschied zwischen diesen Ubuntu's (Ubunti?)... ☺ Bis später... GRuss HP-Fan
|
HP-Fan
(Themenstarter)
Anmeldungsdatum: 2. September 2012
Beiträge: 394
Wohnort: Schweiz (CH)
|
Abend Forum Ich habe im mate-Autostartfenster folgenden Befehl verwendet: | mate-terminal -x sh -c 'cd Ort-wo-das-Programm-liegt; ./MeinProgramm.py; exec bash'
|
Also analog zum "gnome", einfach das "gnome" durch "mate" ersetzt.
Jetzt startet das Programm auch auf dem Raspi. Das gute ist, dass das Autostart-Center bereits auf Mate vorinstalliert ist. Man braucht nur das Programm und die Befehlszeile angeben. Gruß HP-Fan
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
und das "sh -c" kannst Du nicht weglassen?
|
Marc_BlackJack_Rintsch
Ehemalige
Anmeldungsdatum: 16. Juni 2006
Beiträge: 4577
Wohnort: Berlin
|
@user_unknown: Nein das geht nicht. Das was nach der Option -x folgt ist das Programm (Einzahl!) und die Argumente für dieses Programm. Zumal man für cd und exec ja auch eine Shell braucht, denn das sind Shell-Kommandos und keine Programme. Wenn da nur 'cd Ort-wo-das-Programm-liegt; ./MeinProgramm.py; exec bash' stehen würde, dann wird das alles als der Programmname angesehen.
|