Bash Script: esegue l'istanza corrente o nuova di un'applicazione
Domanda
Ho aggiunto un collegamento a un'applicazione in Ubuntu. Ogni volta che premo i tasti di scelta rapida, viene creata una nuova istanza dell'applicazione. Ho bisogno solo di un'istanza, quale script posso usare per aprire l'istanza esistente dell'applicazione o crearne una nuova se l'applicazione non è in esecuzione?
Soluzione
Dipende molto dall'applicazione. Il caso più banale sarebbe il nome del processo noto che può essere eseguito solo da te (ovvero, senza istanze vaganti sul sistema):
pidof applicaton || /usr/bin/application
L'apertura di un'applicazione esistente può risultare complicata e, di nuovo, dipende dall'applicazione. Ti suggerirei di dare un'occhiata a alltray e di prestare particolare attenzione al alltray - -help
output.
Modifica di ypnos: Se vuoi limitare questo solo all'utente corrente, dovresti usare pgrep invece di pidof, in questo modo:
pgrep -u `id -u` application || application
Altri suggerimenti
Puoi anche provare uno script come questo:
#! /bin/bash
user=`id -un`
lock=/tmp/$user-$1-lock
if [ -e $lock ]; then
exit #app is already running
fi
touch $lock
$@
rm $lock
Se hai chiamato lo script 'runner.sh', puoi usarlo in questo modo:
runner.sh xcalc
È per i casi in cui pidof non funziona. Altrimenti scegli la soluzione di hacker, che è anche più robusta.