2009-09-14 6 views
1

J'ai ajouté un raccourci vers une application dans ubuntu. Chaque fois que j'appuie sur les touches de raccourci, une nouvelle instance d'application est créée. Je n'ai besoin que d'une instance, quel script je peux utiliser pour ouvrir l'instance existante de l'application ou en créer une nouvelle si l'application n'est pas en cours d'exécution?Bash Script - Exécution de l'instance actuelle ou nouvelle d'une application

+0

Regardez s'il est déjà en cours d'exécution et appuyez sur Alt + Tab? –

+0

L'application que j'utilise est un dictionnaire simple dans la barre d'état système et n'apparaît pas dans Alt + Tab. Je l'utilise assez souvent, donc j'appuie sur la touche de raccourci plusieurs fois pendant la lecture des articles, donc je veux qu'il s'ouvre très rapidement juste en appuyant sur la touche de raccourci. –

Répondre

3

Cela dépend beaucoup de l'application. Le cas le plus trivial serait le nom du processus connu qui ne peut être géré par vous (c'est pas de cas errants sur le système):

pidof applicaton || /usr/bin/application 

Ouverture d'une application existante peut se compliquer et, encore une fois, dépend de la application. Je suggère que vous jetez un oeil à alltray thingie et portez une attention particulière à la sortie alltray --help.

Modifier par ypnos: Si vous voulez limiter cela à l'utilisateur actuel, vous devez utiliser pgrep au lieu de pidof, comme ceci:

pgrep -u `id -u` application || application 
+0

Merci, fonctionne très bien. –

2

Vous pouvez également essayer un script comme celui-ci:

#! /bin/bash 
user=`id -un` 
lock=/tmp/$user-$1-lock 
if [ -e $lock ]; then 
    exit #app is already running 
fi 

touch $lock 
[email protected] 
rm $lock 

Si vous avez appelé le script 'runner.sh', vous pouvez l'utiliser comme ceci:

runner.sh xcalc 

Est pour les cas où pidof ne fonctionne pas. Sinon, optez pour la solution du pirate informatique, qui est également plus robuste.

+0

Le script a aussi bien fonctionné, merci. –

+0

Autant que je comprends votre script, il garantit qu'une seule instance de l'application peut être exécutée à l'échelle du système même si de nombreux utilisateurs sont connectés et utilisent la même application? –

+0

Non, le fichier de verrouillage est lié à l'utilisateur, voir la variable $ user dans le script. – ypnos

Questions connexes