# Automatisches Starten von X11- App. nach Server-Start

## mcimaster

Hallo zusammen,

ich habe eine Java- Applikation, die nur mit X11 lauffähig ist. Ich müsste diesen Dienst jedes mal automatisch starten, wenn der Server rebootet oder gestartet wird. Nun zu meiner Frage. Wie kann ich es erreichen, dass eine X11-Applikation, ohne! dass ich mich extra anmelde, im Hintergrund für meinen User gestartet wird? (Wer sich darunter nichts vorstellen kann: Es soll wie bei einem Windows Server funktionieren. Dieser wird hochgefahren und im Hintergrund laufen dann die notwendigen Prozesse und Programme.)

Ich weiß, auf einem Linux- Server sollte kein X11 installiert sein, etc. etc., jedoch lässt sich das aufgrund der Applikation nicht vermeiden.

Ich habe diesen Server noch nicht installiert. Deswegen bin ich sehr flexibel und würde mir gerne ein paar Meinungen einholen, wie man das Problem am besten lösen könnte.

Welchen X11-Server würdet ihr empfehlen?

Hardware:

Mainboard: Zotac ION ITX A, GeForce 9400 (dual PC2-6400U DDR2)

RAM: 4GB

HD: 2 x 500GB (RAID 1)

Ich würde mich über ein paar Vorschläge freuen.

Vielen Dank im Voraus

lg

----------

## Finswimmer

X &

DISPLAY=:0 $startprogram & 

sollte funktionieren.

Alternativ noch ein su $user -c "DISPLAY...." nehmen.

Tobi

----------

## mcimaster

Hallo Tobi,

vielen Dank für die schnelle Antwort. Ich werde es demnächst ausprobieren und natürlich berichten.

lg mci

----------

## mcimaster

Hallo Tobi,

ich habe die Zeilen in die /etc/conf.d/local.start eingefügt. Leider klappt es mit der X-Session nicht wie gewollt. Nachdem ich mich unter Fluxbox via Slim anmelde, ist kein X-App. (in dem Fall teste ich das mit Firefox) zu sehen und in der Prozessliste läuft ebenfalls kein Firefox.

Andere Non-X- Commands funktionieren jedoch ohne Probleme.

Hast du vielleicht eine Idee, woran das liegen kann?

Danke im Voraus,

lg mci

----------

## Klaus Meier

Beim gdm und wohl auch beim kdm kannst du ein autologin konfigurieren, so dass Gnome automatisch gestartet wird und sich ein Benutzer anmeldet. Und dann das Programm als autostart eintragen. Jedenfalls, wenn du Gnome nutzt. Etwas viel, um nur ein Programm zu starten, aber wenn es sonst nicht geht....

----------

## firefly

 *Klaus Meier wrote:*   

> Beim gdm und wohl auch beim kdm kannst du ein autologin konfigurieren, so dass Gnome automatisch gestartet wird und sich ein Benutzer anmeldet. Und dann das Programm als autostart eintragen. Jedenfalls, wenn du Gnome nutzt. Etwas viel, um nur ein Programm zu starten, aber wenn es sonst nicht geht....

 

es muss ja keine gnome session sein  :Wink:  eine fluxbox session oder direkt das Program (dafür müsste man ein passendes script schreiben, welches nach dem login gestartet wird).

----------

## mcimaster

Hallo Klaus Meier,

danke für die Antwort. Ja, daran habe ich auch schon gedacht. Die Lösung ist sicherheitstechnisch nicht die beste und deswegen hoffe ich, dass es doch noch eine andere Lösung gibt.

Würden wir diesen Ansatz verfolgen, müsste ich nach dem Einloggen meinen User sperren können. Vielleicht mittels Screensaver? Aber das sind eben nicht so schöne workarounds.

lg mci

----------

## mcimaster

 *firefly wrote:*   

>  *Klaus Meier wrote:*   Beim gdm und wohl auch beim kdm kannst du ein autologin konfigurieren, so dass Gnome automatisch gestartet wird und sich ein Benutzer anmeldet. Und dann das Programm als autostart eintragen. Jedenfalls, wenn du Gnome nutzt. Etwas viel, um nur ein Programm zu starten, aber wenn es sonst nicht geht.... 
> 
> es muss ja keine gnome session sein  eine fluxbox session oder direkt das Program (dafür müsste man ein passendes script schreiben, welches nach dem login gestartet wird).

 

Ja stimmt. Ich kann mir nicht vorstellen, dass es in der Unix/Linux Serverwelt keine Applikationen gibt, die X voraussetzen.

lg mci

----------

## firefly

ich habe mal ne zeitlang nen rechner mit freevo laufen lassen. freevo hatte ich beim starten des System über local.start gestartet.

freevo selbst bietet eine cmd-option mit der freevo selbst eine X-Session für sich selbst startet.

freevo macht das über  *Quote:*   

> xinit <freevo-bin>

 

und ich hatte das freevo startscript über

 *Quote:*   

> su <user> -c <freevo start script>

  über local-start gestartet.

An deiner stelle würde ich erst mal prüfen ob man das java programm direkt über xinit starten kann und wenn das geht kannst du diese zeile ja in local.start packen.

Trotzdem stellt sich mir die frage für was das program eine aktive X-Session benötigt.

----------

## musv

Also auf einem Server würde ich auf einen Anmeldemanager a la GDM, KDM, xdm verzichten. Ein startx sollte reichen. Dass die X-App nicht startet kann auch einfach den Grund haben, dass X 'ne Weile zum Starten braucht. Ich würde dann wahrscheinlich probieren, ein Sleep einzubauen, um dem X-Server die nötige Startzeit zu geben. 

Sowas in der Art:

```
X & 

sleep 10 && DISPLAY=:0 $startprogram &
```

----------

## firefly

 *musv wrote:*   

> 
> 
> ```
> X & 
> 
> ...

 

oder halt xinit verwenden, dass sollte das eigentliche Programm erst starten, wenn X soweit ist.

----------

## mcimaster

 *musv wrote:*   

> Also auf einem Server würde ich auf einen Anmeldemanager a la GDM, KDM, xdm verzichten. Ein startx sollte reichen. Dass die X-App nicht startet kann auch einfach den Grund haben, dass X 'ne Weile zum Starten braucht. Ich würde dann wahrscheinlich probieren, ein Sleep einzubauen, um dem X-Server die nötige Startzeit zu geben. 
> 
> Sowas in der Art:
> 
> ```
> ...

 

Hallo,

ich habe sleep 10 eingefügt. Leider funktioniert es nicht. Es klappt nur, wenn ich mich auch unter fluxbox anmelde, dann startet auch der Browser nach 120 Sekunden. Ansonsten verschwindet der Prozess einfach aus der Prozessliste.

Irgend etwas mache ich falsch. Bloß was?

Ich verwende immer noch slim als Login-Manager. Es sieht so aus, als ob die Xsession gar nicht startet, solange ich sie selber nicht starte.

Die /etc/conf.d/local.start sieht so aus:

```
su myuser -c "X" &

su myuser -c "/usr/bin/sleep 120 && DISPLAY=:0 /usr/bin/firefox" &
```

Hat jemand noch eine Idee?

lg mci

----------

## firefly

halloooo?? liest jemand überhaupt meine posts *fühltsichignoriert*

----------

## mcimaster

Hallo firefly,

sorry, dass ich noch nicht geantwortet habe. Wo kann ich die xinit editieren? Meinst du die xinitrc?

lg mci

----------

## firefly

 *mcimaster wrote:*   

> Hallo firefly,
> 
> sorry, dass ich noch nicht geantwortet habe. Wo kann ich die xinit editieren? Meinst du die xinitrc?
> 
> lg mci

 

nein xinit ist ein script/programm, welches eine X-Session startet und danach das angegebene program startet bzw. die xinitrc startet, falls vorhanden.

z.b. xterm

```
xinit /usr/bin/xterm
```

startet xterm in einer X-Session.

----------

## mcimaster

 *firefly wrote:*   

>  *mcimaster wrote:*   Hallo firefly,
> 
> sorry, dass ich noch nicht geantwortet habe. Wo kann ich die xinit editieren? Meinst du die xinitrc?
> 
> lg mci 
> ...

 

Wow, ich weiß nicht ob ich das richtig verstehe, aber öffnet er mit xinit das Programm ohne dabei ein Window Manager zu verwenden? Sehe ich das richtig? Ich kann nämlich nichts auswählen außer die Applikation.

Nun, das ist schon einmal die richtige Richtung. Jedoch ist das ein Sicherheitsleck. Ich müsste die App. im Hintergrund laufen lassen, sodass niemand auf sie zugreifen kann. Der Zugriff sollte erst nach Eingabe von User & Pass ermöglicht werden.

lg mci

----------

## firefly

 *mcimaster wrote:*   

> Wow, ich weiß nicht ob ich das richtig verstehe, aber öffnet er mit xinit das Programm ohne dabei ein Window Manager zu verwenden? Sehe ich das richtig? Ich kann nämlich nichts auswählen außer die Applikation.

 

Jupp es wird eine X-Server Instanz gestartet und dann das Programm, welches X benötigt. Kein WM im Spiel.

 *mcimaster wrote:*   

> Nun, das ist schon einmal die richtige Richtung. Jedoch ist das ein Sicherheitsleck. Ich müsste die App. im Hintergrund laufen lassen, sodass niemand auf sie zugreifen kann. Der Zugriff sollte erst nach Eingabe von User & Pass ermöglicht werden.

 

Jo es ist ein Problem, dass lässt sich nicht ganz vermeiden, da dein Programm X benötigt. Eine Möglichkeit wäre, neben deiner App zusätzlich xscreensaver zu starten, welches gleich den screen sperrt.

Sobald der screen entsperrt ist, kannst du den screen nicht mehr so einfach wieder sperren, außer du stellst einen Timeout im xscreensaver ein oder du startest zusätzlich ein x-Terminal in dem du dann den screen wieder sperren kannst. (Über xscreensaver-command -lock).

Wenn das speren des screens über eine Tasten combo geschehen soll müsstest du xbindkeys oder ähnliches zusätzlich starten.

Dann sind wir schon fast soweit, dass wir eigentlich einen WM starten könnten.

----------

## mcimaster

 *firefly wrote:*   

>  *mcimaster wrote:*   Wow, ich weiß nicht ob ich das richtig verstehe, aber öffnet er mit xinit das Programm ohne dabei ein Window Manager zu verwenden? Sehe ich das richtig? Ich kann nämlich nichts auswählen außer die Applikation. 
> 
> Jupp es wird eine X-Server Instanz gestartet und dann das Programm, welches X benötigt. Kein WM im Spiel.
> 
>  *mcimaster wrote:*   Nun, das ist schon einmal die richtige Richtung. Jedoch ist das ein Sicherheitsleck. Ich müsste die App. im Hintergrund laufen lassen, sodass niemand auf sie zugreifen kann. Der Zugriff sollte erst nach Eingabe von User & Pass ermöglicht werden. 
> ...

 

Hehehe. Ja genau. Okay, danke auf jeden Fall für die Tipps und die Hilfe. In ein paar Tagen werde ich versuchen es zu realisieren. Ich denke ich werde es mittels WM machen und den Zugang mittels xscreensaver sperren.

Wenn jemandem noch etwas einfällt, dann bitte nicht schüchtern sein, sondern schreiben.  :Wink: 

lg mci

----------

## mcimaster

Ich wollte ein letztes mal pushen, bevor der Thread endgültig in der Versenkung verschwindet.

@ all, die mitgeholfen haben:

Vielen Dank!

lg mci

----------

## Qubit

Hi,

wie wärs damit?:

http://de.wikipedia.org/wiki/Xvfb

Gruß Daniel

----------

