Wieso geht das nicht?

T

Thomy22

Grünschnabel
Hallo Leute

Ich habe mir ein Shellskript für das Starten von Warhammer40k mit Wine eingerichtet:
Code:
#!/bin/sh

X :3 -ac &

cd ~/".wine/drive_c/Programme/THQ/Dawn of War - Dark Crusade"

sleep 2

DISPLAY=:3 wine DarkCrusade.exe

kill $(ps ax|grep "X :3")

Das Ergebnis ist das:

1. Man das nur als sudo starten kann (Kubuntu 7.10) sonst startet der Xserver nicht (wieso das eigentlich?).

2. Die neue Xsession geöffnet wird (das graue Bild) dann 2 Sekunden gewartet wird und sich das dann wieder beendet, ohne die EXE gestartet zu haben. Was mache ich da falsch?

Gruß Thomy
[/LIST]
 
Code:
X: user not authorized to run the X server, aborting.
 
Die Meldung oben war glaub ich die Ausgabe für supersucker, was passiert wenn er es ohne sudo ausführt ;).
Was passiert wenn du das kill am Ende des Scripts weglässt? ( Ist nur ne Idee ).

greetings
 
Code:
DISPLAY=:3 wine DarkCrusade.exe

kill $(ps ax|grep "X :3")

Du startest hier ein Programm auf einem extra X-Server. Mit hoher Wahrscheinlichkeit wird damit das Control-TTY an die neue X-Session übergeben, wodurch die Shell, die dein Skript ausführt, wieder freigegeben wird. Sobald sie frei ist, wird der Kill-Befehl ausgeführt. Die bessere Lösung dürfte ein Skript sein, das wie ein init-Skript die Parameter 'start' und 'stop' versteht:

Code:
#!/bin/sh

case "$1" in
start)
    X :3 -ac &
    cd ~/".wine/drive_c/Programme/THQ/Dawn of War - Dark Crusade"
    sleep 2
    DISPLAY=:3 wine DarkCrusade.exe
    ;;
stop)
    kill $(ps ax|grep "X :3")
    ;;
*)
    echo "Usage: `basename $0` {start|stop}" >&2
    exit 64
    ;;
esac

exit 0

Dieses Skript kannst du dann mit 'skriptname start' aufrufen um das Programm zu starten und 'skriptname stop' um es zu beenden. Damit kann das kill nicht in die Quere kommen, wenn das Control-TTY übergeben wird, und diese Fehlerquelle ist ausgeschlossen.
 

Ähnliche Themen

Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

IBM T22, Debian Etch 4, X-server start nach Neuinstall

Zurück
Oben