=== eTeddy1 is now known as eTeddy | ||
=== taunix__ is now known as taunix | ||
=== JanC is now known as Guest71318 | ||
=== JanC_ is now known as JanC | ||
iTommix | Moin. Vielleicht kann jemand helfen: Ich benutze gnomw-terminal um ein CLI-Programm fullscreen zu starten. Wenn ich das Programm beende soll der Rechner runterfahren. Mein Script enthält: „sudo gnome-terminal --full-screen -e /usr/bin/program & sudo shutdown -H now“ - Dummerweise startet das Programm und der Rechner fährt sofort runter. | 17:11 |
---|---|---|
Frickelpit | klar, das sagst du ihm ja auch im Befehl | 17:13 |
j0k | && | 17:13 |
iTommix | Ja… ich dachte nur das der Befehl nach dem „&“ ausgeführt wird wenn der erste beendet wurde | 17:13 |
Frickelpit | selbst das würde sofort runterfahren | 17:13 |
Frickelpit | iTommix: ein & schickts in den Hintergrund, zwei führt es der Reihe nach aus | 17:14 |
k1l | https://wiki.ubuntuusers.de/Shell/Operatoren/#UND-Verknuepfung-von-Befehlen-mit | 17:14 |
le_bot | Title: Operatoren › Shell › Wiki › ubuntuusers.de (at wiki.ubuntuusers.de) | 17:14 |
iTommix | also wäre „&&“ richtig | 17:14 |
Frickelpit | Nein | 17:14 |
Frickelpit | Es sei denn, der Prozess wird erst beim beenden des Terminals als abgeschlossen gewertet vom gnome-terminal | 17:16 |
k1l | die frage ist wann das gnome terminal da den exitstatus abgibt. | 17:16 |
iTommix | Frickelpit: könnte man ja testen ;) | 17:16 |
Frickelpit | iTommix: Das kannst du testen in dem du ein echo $? anstelle des shutdown Befehls packst. | 17:17 |
k1l | ich würde es mal mit && probiere, wenn das nciht geht wirds eh fies. | 17:17 |
iTommix | teste es gerade mal... | 17:18 |
iTommix | nope… fährt sofort runter :( | 17:19 |
Frickelpit | iTommix: der dr_bob kann dir bestimmt sagen, dass das eine doofe Idee ist und man das wunderbar schön anders regeln kann. | 17:21 |
Frickelpit | huhu dr_bob :) | 17:21 |
iTommix | aber warum sollte das eine doofe idee sein? | 17:21 |
dr_bob | Hallo Frickelpit! | 17:22 |
dr_bob | Moment, muss erst mal lesen. | 17:23 |
iTommix | dr_bob: Hi… also prinzipiell eine einfache aufgabe… aber irgendwie will das o.g. nicht funktionieren | 17:25 |
dr_bob | Habe ja leider kein Ubuntu sondern Xubuntu und deshalb kein gnome-terminal. | 17:27 |
xc | iTommix: mit etwas weniger bloatigem als dem gnome-terminal funktioniert das auch ;) | 17:27 |
iTommix | dr_bob: ja, musste ich auch erst nachinstallieren… | 17:28 |
xc | z.B.: xterm -e htop ; echo done | 17:28 |
iTommix | xc: was schlägst du vor? | 17:28 |
dr_bob | Ich plotte noch... | 17:28 |
dr_bob | Also, zunächst mal ist es blöd, zwei Mal sudo zu haben. Wenn Dein Programm lange läuft, dann wird er beim shutdown immer nach dem Passwort fragen. | 17:29 |
iTommix | hm… vielleicht funktioniert ja auch GT mit einem „;“ - testen | 17:29 |
xc | nein, wird es nicht | 17:29 |
xc | der einzige Unterschied ist, dass bei && der Rückgabewert eine Rolle spielt, bei ; nicht. | 17:30 |
iTommix | ok… und xterm lässt sich fullscreen öffnen? | 17:31 |
xc | Das Problem bei dem gnome-terminal scheint zu sein, dass es sich in den Hintergrund forkt. Wenn du unbedingt gnome-terminal verwenden willst, wird das komplizierter, je nachdem wie genau du "Programm beenden" verstehst. | 17:31 |
xc | iTommix: das sagt dir "man xterm" | 17:31 |
dr_bob | iTommix, ich würde das so machen. Eigentlich müsste gnome-terminal erst enden, wenn das gestartete Programm beendet ist. | 17:32 |
dr_bob | Sorry, Link vergessen: https://paste.ubuntuusers.de/423939/ | 17:32 |
le_bot | Title: Unbenannt › Ablage › ubuntuusers.de (at paste.ubuntuusers.de) | 17:32 |
iTommix | naja… was verstehe ich darunter. rufe ich das programm im terminal auf (bash) dann blockiert es ja auch die bash, bis ich „quit“ anklicke ;) | 17:32 |
xc | iTommix: es macht einen Unterschied, ob du das Terminal schließt, oder du das Programm korrekt beendest und sich das Terminal danach von selbst schließt. | 17:33 |
iTommix | oh gott… dr_bob… :D was hast du da zusammengebaut? | 17:33 |
dr_bob | Zu Eurer Diskussion oben: ich würde && nur dann verwenden, wenn der Shutdown tatsächlich bei einem Fehler ausbleiben soll. Sonst sollte man ";" nehmen, wenn denn alle Befehle unbedingt auf einer Zeile stehen müssen. | 17:33 |
dr_bob | iTommix, das Skript schaut in Zeile 3 nach, ob es als root läuft (also mit sudo). Falls nicht, ruft es sich selbst mit sudo auf, indem es den aktuellen Prozess überlagert (exec). | 17:34 |
dr_bob | $DEBUG dient nur dem Zweck, dass man einfach Debugging einschalten kann. Dann rufst Du das einfach so auf: $ DEBUG=x das-script | 17:35 |
dr_bob | Mache ich immer so. Dann kann man auch bequem über mehrere Skripte hinweg debuggen, die sich gegenseitig aufrufen. | 17:35 |
iTommix | ok… also ausser das ich den parameter „-e“ nimmst du für gnome-terminal hier „-x“ - der unterschied macht es dann? | 17:36 |
dr_bob | War die Erläuterung hilfreich? | 17:36 |
iTommix | dr_bob: yes… danke | 17:36 |
iTommix | dr_bob: auch mit deinem script fährt der rechner sofort runter :( | 17:38 |
dr_bob | Eher nicht. Ich bevorzuge aber -x hier, weil man dann einfach weitere Kommandozeilenargumente anhängen kann und keinen Stress mit Shell-Sonderzeichen bekommt. Man kann auch gleich alle Argumente durchreichen: https://paste.ubuntuusers.de/423940/ | 17:38 |
le_bot | Title: Sudo mit shutdown › Ablage › ubuntuusers.de (at paste.ubuntuusers.de) | 17:38 |
dr_bob | "Eher nicht" bezog sich auf den Unterschied. | 17:39 |
dr_bob | Läuft denn Dein Programm wirklich? Vielleicht hast Du ja ein Problem mit dem Kommando oder der Tatsache, dass es als root ausgeführt wird | 17:39 |
iTommix | es soll mit sudo laufen. und ja, man sieht es kurz, aber dann fährt die büchse ja schon runter | 17:40 |
xc | siehe was ich vor 10min schon schrieb. | 17:40 |
iTommix | wegen xterm? | 17:41 |
dr_bob | Dann mach doch mal folgendes: gnome-terminal -e "dein befehl; read foo" | 17:41 |
dr_bob | Dann bleibt das Terminal auf jeden Fall offen und Du kannst schauen, was es da als Fehler gibt. | 17:41 |
iTommix | also in anführungszeichen setzen? | 17:42 |
xc | gnome-terminal forkt sich in den Hintergrund, deswegen funktioniert der Ansatz von dr_bob nicht. | 17:42 |
dr_bob | xc, warum macht es das? Die Manpage erwähnt das auch nicht. | 17:42 |
xc | dr_bob: frag mich doch nicht sowas, wie erwähnt halte ich das Ding für bloatware und würde davon abraten es zu benutzen. | 17:43 |
xc | Wenn man darauf besteht, ist es wahrscheinlich am sinnvollsten, die pid von dem Prozess "innen" zu holen und auf den zu warten. | 17:44 |
dr_bob | Man könnte es auch umgekehrt machen und die PID des Shell-Skriptes reinreichen. Das legt man dann schlafen und schreibt einen Signalhandler, der es beendet. Ist aber auch eklig. | 17:45 |
iTommix | wäre eine option… | 17:45 |
* dr_bob hat noch eine Ubuntu-VM gefunden und bastelt mal. | 17:46 | |
dr_bob | Hm, btrfs ist nicht optimal als Dateisystem, auf dem VMs liegen. | 17:48 |
xc | die Aussage ist auch ohne den Nebensatz wahr :p | 17:49 |
dr_bob | Bin ansonsten ganz zufrieden. | 17:56 |
dr_bob | iTommix, Du kannst das natürlich auch so machen, dass Du ein Skript schreibst, das Deinen Befehl ausführt und danach den Shutdown macht. Das führst Du dann im gnome-terminal aus (wenn es das sein soll). Oder Du hängst das gleich mit an: sudo gnome-terminal -e 'befehl; shutdown -H now' | 18:02 |
xc | Das macht halt dann Probleme, wenn es auch "ok" sein soll, das Terminal zu schließen (deswegen oben meine Nachfrage). | 18:03 |
iTommix | dr_bob: werde ich mal testen… ansosnten bleibt noch die variante mit der PID | 18:04 |
xc | Quick and Dirty ginge auch sowas, vorausgesetzt es gibt nur einmal htop / dein ausgeführtes Programm: | 18:05 |
xc | gnome-terminal -e htop ; sleep 1 ; while pgrep htop &>/dev/null ; do sleep 2s ; done ; echo done | 18:05 |
iTommix | ja… das gibt es definitiv dann nur einmal :) | 18:05 |
iTommix | ich teste das, xc | 18:06 |
dr_bob | Statt pgrep nehme ich gerne pkill -0 htop 2>/dev/null. | 18:06 |
xc | aber das ist halt jetzt echt zusammengehackt und ich würde eher einfach einen anderen Terminalemulator nehmen | 18:06 |
dr_bob | Ach nee, das läuft ja unter dem anderen Benutzer. Vergiss das- | 18:06 |
iTommix | das terminal wäre mir egal… es soll halt im fullscreen modus laufen | 18:07 |
dr_bob | So Schleifen, die auf die Beendigung eines Prozesses warten, finde ich immer so unelegant. | 18:08 |
xc | also, wenn deine Version neu genug ist, hilft das hier: https://github.com/GNOME/gnome-terminal/commit/42f9f7978e3d103af7a5c9eb2c8f0e8d40e0647c | 18:10 |
le_bot | Title: client: legacy: Implement waiting for child process exit · GNOME/gnome-terminal@42f9f79 · GitHub (at github.com) | 18:10 |
xc | und sonst wie gesagt: xterm -fullscreen -e htop ; echo done | 18:10 |
iTommix | xc: das war meine frage vorhin, ob xterm fullscreen kennt… sorry… hab hier gerade 2 probleme auf dem tisch :( | 18:12 |
xc | geht sicher auch mit xfce4-term, urxvt oder sonstewas | 18:14 |
* dr_bob würde dann auch xterm nehmen. Auf Xubuntu natürlich xfce4-terminal | 18:16 | |
iTommix | xc: und dr_bob habe es jetzt mit der pgrep variante gelöst… danke allen :) | 19:33 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!