Bash Script - запуск текущего или нового экземпляра приложения - PullRequest
1 голос
/ 14 сентября 2009

Я добавил ярлык для приложения в Ubuntu. Каждый раз, когда я нажимаю сочетание клавиш, создается новый экземпляр приложения. Мне нужен только один экземпляр, какой скрипт я могу использовать, чтобы открыть существующий экземпляр приложения или создать новый, если приложение не запущено?

Ответы [ 2 ]

3 голосов
/ 14 сентября 2009

Это сильно зависит от приложения. Наиболее тривиальным случаем будет известное имя процесса, которое может быть запущено только вами (то есть в системе нет случайных экземпляров):

pidof applicaton || /usr/bin/application

Открытие существующего приложения может быть сложным и, опять же, зависит от приложения. Я бы посоветовал вам взглянуть на alltray thingie и обратить особое внимание на вывод alltray --help.

Редактировать ypnos: Если вы хотите ограничить это только для текущего пользователя, вы должны использовать pgrep вместо pidof, например:

pgrep -u `id -u` application || application
2 голосов
/ 14 сентября 2009

Вы также можете попробовать скрипт, подобный этому:

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

touch $lock
$@
rm $lock

Если вы назвали скрипт runner.sh, вы можете использовать его так:

runner.sh xcalc

Для случаев, когда pidof не работает. Иначе воспользуйтесь решением хакера, которое также является более надежным.

...