• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[solved] Hilfe - ausführen von Programmen

GMastaP

Member
Hallo,

ich hab da mal ein Problem.

Ich versuche gerade eine Art Kioskcomputer mit einer statistischen Spezialapplikation zu installieren. Bisher auch kein Problem. Allerdings möchte ich, dass diese Applikation nur einmal pro Benutzer aufgerufen wird und bei einemn zweiten Versuch eine Fehlermeldung kommt.

Ich habe verscuht ein kleines Bashscript zu schreiben:

Code:
#!/bin/bash

 mesg y

APPUSER=$(who am i | awk '{print $1}' )
APP_BIN="/usr/local/stata10/xstata-mp"
RUNAPP=$(ps -ef | egrep "$APPUSER" | egrep "/usr/local/stata10/xstata-mp" | grep -v "egrep")

if [ "$RUNAPP" = "" ];
   then
        $APP_BIN
else
       echo "Es wird eine Stata10 Session bereits ausgefuert." | write $APPUSER
fi

sleep 10

Nunja alles ganz super für 10 sekunden bleibt das Applikationsfenster auch auf. danach schließt es sich mit der Schell wieder.

Ich führe das ganze über kde mit der Option "in shell ausführen" aus.

Es gibt bestimmt bessere Wege dieses zu realisieren. Es würde mir auch schon reichen, wenn die Applikation am laufen bleibt.

Danke schonmal im voraus.

Liebe Grüße
GM
 

spoensche

Moderator
Teammitglied
Das liegt an dem
Code:
sleep
. Dann sollte das gehen.

Du brauchst nur bei jedem Aufruf des Scripts zu prüfen, ob die Anwendung läuft.
 
OP
G

GMastaP

Member
ohne sleep startet komicher weise die anwendung nicht sauber.

Habe aber nun einen anderen Weg gefunden.

Dennoch danke für den Tip :)

Ich werde mal am WE Probieren.

Frohes Pfingstfest

GMastaP
 

TomcatMJ

Guru
Tipp: Prüfe doch mit
Code:
pidof <Programmname wie es unter ps zu sehen wäre>
auf eine laufende Instanz des Programms und lass es nur dann starten wenns nicht bereits läuft, also nur beim zutreffen einer negierten IF-Abfrage. Damit dürftest du dir einigen Streß zur Überprüfung vom Hals halten können ;)

Bis denne,
Tom
 
A

Anonymous

Gast
*Hüstel*

APPUSER=$(who am i | awk '{print $1}' )

Und den Sinn der Pipe durch awk für einen Befehl, der so oder so (sofern er denn richtig ausgeführt wird) nur eine einzige Ausgabe hat, verstehe ich ehrlicherweise auch nicht so ganz ....... :?
 

regexer

Advanced Hacker
Rain_Maker schrieb:
*Hüstel*

APPUSER=$(who am i | awk '{print $1}' )

Und den Sinn der Pipe durch awk für einen Befehl, der so oder so (sofern er denn richtig ausgeführt wird) nur eine einzige Ausgabe hat, verstehe ich ehrlicherweise auch nicht so ganz ....... :?
Vor allem gibt es $LOGNAME $USER oder $USERNAME. Aber funktionieren sollte es trotzdem ...
 
OP
G

GMastaP

Member
Danke für die vielen Tips und Tricks, ich habe mich nun für eine andere Möglichkeit enschieden, die sich für mich schneller realisieren lies.

Beim Aufruf der Applikation lasse ich im /home/username/ eine app.pid erstellen.
wenn der Benutzer nun Versucht ein zweites mal das Prog zustarten wird geschaut ob es diese datei schon gibt. Wenn ja dann wird die application nicht nochmal geöffnet.

mit einem hintergrund daemon schaue jede Minute nach ob die Applikation läuft und die app.pid noch vorhanden ist. Wenn das Prog nicht mehr läuft wird die app.pid gelöscht.

werde aber es noch versuchen in ein script zu modeln.

Vielen dank dennoch :)

Gruß
GM
 
Oben