View previous topic :: View next topic |
Author |
Message |
SarahS93 l33t

Joined: 21 Nov 2013 Posts: 737
|
Posted: Thu Jan 16, 2014 4:47 pm Post subject: Im KDE skript im Terminal ausführen und nicht schliessen |
|
|
Habe eine .sh Datei die ein Programm aufruft und es in den Hintergrund macht.
Das Skript kann ich als User Starten, das Programm geht in den Hintergrund und alles ist gut, vom Terminalfenster aus.
Nun will ich das Skript per Doppelclick clicken und es soll über das xterm Terminalfenster (benutze im KDE das Programm "konsole") gestartet werden. Ich will das dass xterm Fenster das Skript aufruft damit falls das Skript fehlermeldungen ausgibt, ich sie sehen kann.
Wie stelle ich das an? Mit rechtsclick auf das Skript finde ich nichts wo ich sagen kann "nach beendigung geöffnet lassen", diese Option gibt es nur wenn ich eine Desktop-Verknüpfung mache. Mache ich das, habe ich aber "konsole"-Terminalfenster.
Über z.B. Alt + F2 kann ich "xterm mc" eingeben, und ich habe den Midnight Commander im Xterm Terminalfenster.
Aber mit "xterm /mein/script.sh" tut das nicht. Wie muss ich vorgehen? |
|
Back to top |
|
 |
py-ro Veteran


Joined: 24 Sep 2002 Posts: 1734 Location: Velbert
|
Posted: Thu Jan 16, 2014 10:36 pm Post subject: |
|
|
Bei konsole
Dort findest dann --no-close oder --hold. |
|
Back to top |
|
 |
SarahS93 l33t

Joined: 21 Nov 2013 Posts: 737
|
Posted: Thu Jan 16, 2014 10:48 pm Post subject: |
|
|
Naja, ich will ja nicht "konsole" benutzen, sondern xterm. |
|
Back to top |
|
 |
py-ro Veteran


Joined: 24 Sep 2002 Posts: 1734 Location: Velbert
|
Posted: Thu Jan 16, 2014 11:00 pm Post subject: |
|
|
Oben schriebst aber konsole, naja, bei xterm kannst nach -hold schauen. |
|
Back to top |
|
 |
SarahS93 l33t

Joined: 21 Nov 2013 Posts: 737
|
Posted: Thu Jan 16, 2014 11:47 pm Post subject: |
|
|
Dann habe ich mich nicht ganz richtig ausgedrückt.
Ich will auf meinem KDE Desktop eine Verknüpfung anlegen die auf eine .sh Datei zeigt.
Wenn ich diese verknüpfung anclicke, will ich das ein xterm Fenster kommt das meine .sh Datei aufruft und sich aber nicht schliesst.
In der .sh Datei rufe ich ein Programm auf das sich in den Hintergrund macht. |
|
Back to top |
|
 |
franzf Advocate


Joined: 29 Mar 2005 Posts: 4565
|
Posted: Fri Jan 17, 2014 9:08 am Post subject: |
|
|
Dann erstell doch ein weiteres script, das "xterm -hold eigentliches_script.sh" o.Ä. aufruft und erstell dafür einen shortcut auf deinem desktop.
Oder verwend yakuake und ruf da das script einfach direkt auf? (Ich hab nie verstanden, warum Leute lieber auf dem nicht immer sichtbaren Desktop rumclicken als ne konsole oder Alt+F2 zu verwenden, aber naja ) |
|
Back to top |
|
 |
musv Advocate


Joined: 01 Dec 2002 Posts: 3375 Location: de
|
Posted: Fri Jan 17, 2014 10:12 am Post subject: |
|
|
Du kannst auch einfach am Ende Deines Scripts ein:
rankleben. Dann wartet die Konsole solange, bis eine Taste gedrückt wurde, bevor sie sich schließt. |
|
Back to top |
|
 |
SarahS93 l33t

Joined: 21 Nov 2013 Posts: 737
|
Posted: Fri Jan 17, 2014 12:40 pm Post subject: |
|
|
Mit "read" am Ende vom Script tut sich bei mir nichts. Als wenn es garnicht beachtet werden würde.
Mit einem weiterem Scripte, in dem
#!/bin/sh
xterm -hold meinscript.sh
steht, erhalte ich die Aussage "xterm: No absolute path found for shell:".
Schreibe ich den gesamten Pfad dazu, funktioniert es, jedoch wenn ich das xterm Fenster schliesse, schliesst sich auch das Programm das durch das erste Script in den Hintergrund gelegt wurde. |
|
Back to top |
|
 |
Christian99 Veteran

Joined: 28 May 2009 Posts: 1734
|
Posted: Fri Jan 17, 2014 3:41 pm Post subject: |
|
|
wie legst du denn das programm in den Hintergrund? mit "&"?
Wahrscheinlich musst du noch ein "nohup" dem befehl vorne ranstellen. |
|
Back to top |
|
 |
SarahS93 l33t

Joined: 21 Nov 2013 Posts: 737
|
Posted: Fri Jan 17, 2014 6:07 pm Post subject: |
|
|
Ja, mit & lege ich es in den Hintergrund.
Egal ob nur im 1. , 2. oder in beiden Scripten ein "nohup" steht, es zeigt keine positive wirkung.
Hier meine beiden Scripte:
vm01_2_start.sh Code: |
#!/bin/sh
nohup qemu-kvm \
-k de -enable-kvm -smp 8 -m 2048 -localtime -name __vm01-test__ \
-hda vm01_disk1.img \
-hdb vm01_disk2.img \
-vga vmware \
-net nic,model=virtio,macaddr=00:00:00:00:00:01 \
-net tap,ifname=qtap1,script=no,downscript=no \
-usbdevice tablet \
-qmp tcp:127.0.0.1:4444,server,nowait \
-vnc 192.168.178.33:1 &
echo $! > ./vm01_run.pid
# -cdrom install-amd64-minimal-20131010.iso \
# -boot d \
read
|
Mit diesem Scripte starte ich meine VM von dem Terminalemulator "konsole"
Wenn ich dieses Script über die KDE Oberfläche aus anclicke, startet die VM auch, scheinbar jedenfalls.
Ich erhalte keine Meldung ob sie dies wirklich tut oder ob es eine Fehlermeldung gab.
Über den Terminalemulator "konsole" würde ich eine Fehlermeldung angezeigt bekommen.
So, nun das 2. Script das ich nur von der KDE Oberfläche aus nutze um das erste Script aufzurufen.
vm01_starten.sh Code: |
#!/bin/sh
nohup xterm -hold /mnt/test/vm01_2_start.sh
read |
Ich will im KDE auf etwas clicken können, das mir in einem xterm Fenster anzeigt ob und wie qemu-kvm gestartet wird.
Wie muss ich das anstellen?! |
|
Back to top |
|
 |
Christian99 Veteran

Joined: 28 May 2009 Posts: 1734
|
Posted: Fri Jan 17, 2014 7:03 pm Post subject: |
|
|
also, wenn du xterm einen scriptnamen mitgibst, dann musst du da noch ein -e davor machen. außerdem macht beim xterm das nohup keinen sinn, das willst du ja nicht im hintergrund laufen lassen. also sollte das so aussehen:
Code: | xterm -e /mnt/test/vm01_2_start.sh |
das musst du auch nicht in ein skript machen, das geht auch als anwendungsstarter. |
|
Back to top |
|
 |
SarahS93 l33t

Joined: 21 Nov 2013 Posts: 737
|
Posted: Fri Jan 17, 2014 7:25 pm Post subject: |
|
|
Wenn ich ALT + F2 mache, und dann dort
xterm -e /mnt/test/vm01_2_start.sh
eingebe, habe ich plötzlich auf dem Desktop eine "vm01_run.pid" Datei.
Und startet tut es auch nicht.
Auch wenn ich es als Verknüpfung auf dem KDE Desktop anlege, das gleiche. Es kommt nichts wenn ich es doppelclicke. |
|
Back to top |
|
 |
Christian99 Veteran

Joined: 28 May 2009 Posts: 1734
|
Posted: Fri Jan 17, 2014 8:16 pm Post subject: |
|
|
steht in der .pid datei was drin?
und was passiert wenn du
Code: | xterm -hold -e /mnt/test/vm01_2_start.sh | machst? |
|
Back to top |
|
 |
franzf Advocate


Joined: 29 Mar 2005 Posts: 4565
|
Posted: Fri Jan 17, 2014 8:35 pm Post subject: |
|
|
SarahS93 wrote: | Wenn ich ALT + F2 mache, und dann dort
xterm -e /mnt/test/vm01_2_start.sh
eingebe, habe ich plötzlich auf dem Desktop eine "vm01_run.pid" Datei. |
Klar, wegen dieser Zeile in deinem start-script:
Code: | echo $! > ./vm01_run.pid |
|
|
Back to top |
|
 |
mrueg Retired Dev

Joined: 08 Jul 2012 Posts: 36 Location: Berlin, Deutschland
|
Posted: Sun Jan 19, 2014 3:35 am Post subject: |
|
|
Um das sofortige Schließen zu verhindern kann man auch soetwas wie
xterm -e "script.sh; exec bash" nutzen. Das kommt vermutlich nahe an das ran, was du eigentlich willst. |
|
Back to top |
|
 |
SarahS93 l33t

Joined: 21 Nov 2013 Posts: 737
|
Posted: Sun Jan 19, 2014 11:00 am Post subject: |
|
|
#!/bin/sh
xterm -e "script.sh; exec bash"
Tuts, aber wenn ich das xterm-Fenster zu mache, wird auch das Programm das ich in script.sh aufrufe beendet
erweitere ich es nach
#!/bin/sh
cd /pfad/
xterm -e "script.sh; exec bash"
und erstelle von dem Script das dass Script aufruft eine Verknüpfung auf den Desktop, hab ich schonmal
das Problem mit der .pid Datei nicht mehr, die komm nämlich jetzt in den richtigen Pfad (-;
Erweitere ich nochmals um
xterm -hold -e "script.sh; exec bash"
und will dann das xterm-Fenster schliessen, über X oben rechts, bleibt es noch da, und zeigt mir an
qemu: terminating on signal 1 from pid 12356
Mein Programm, qemu-kvm, lässt sich scheinbar auch mit Optionen wie "-pidfile" und "deamonsize" aufrufen. Daher ist mein scheinbar umständlicher weg garnicht nötig. Dennoch würde ich gerne verstehen warum es auf meine Methode so schwierig ist das so hinzubekommen.... |
|
Back to top |
|
 |
SarahS93 l33t

Joined: 21 Nov 2013 Posts: 737
|
Posted: Mon Jan 20, 2014 7:12 pm Post subject: |
|
|
Bei qemu-kvm benutze ich nun die Optionen "-daemonize" und "-pidfile", es funktioniert! |
|
Back to top |
|
 |
|