Linux Bash脚本-运行应用程序的当前或新实例

Linux Bash脚本-运行应用程序的当前或新实例,linux,bash,shortcut,Linux,Bash,Shortcut,我在ubuntu中添加了一个应用程序的快捷方式。每次我按下快捷键,就会创建一个新的应用程序实例。我只需要一个实例,如果应用程序未运行,我可以使用什么脚本打开应用程序的现有实例或创建新实例 这在很大程度上取决于应用程序。最简单的情况是已知的进程名,它只能由您运行(即,系统上没有多余的实例): 打开一个现有的应用程序可能会变得很棘手,这同样取决于应用程序。我建议您看看thingie,并特别注意alltray--help输出 由ypnos编辑: 如果只想将此限制为当前用户,则应使用pgrep而不是pi

我在ubuntu中添加了一个应用程序的快捷方式。每次我按下快捷键,就会创建一个新的应用程序实例。我只需要一个实例,如果应用程序未运行,我可以使用什么脚本打开应用程序的现有实例或创建新实例

这在很大程度上取决于应用程序。最简单的情况是已知的进程名,它只能由您运行(即,系统上没有多余的实例):

打开一个现有的应用程序可能会变得很棘手,这同样取决于应用程序。我建议您看看thingie,并特别注意
alltray--help
输出

由ypnos编辑: 如果只想将此限制为当前用户,则应使用pgrep而不是pidof,如下所示:

pgrep -u `id -u` application || application

这在很大程度上取决于应用程序。最简单的情况是已知的进程名,它只能由您运行(即,系统上没有多余的实例):

打开一个现有的应用程序可能会变得很棘手,这同样取决于应用程序。我建议您看看thingie,并特别注意
alltray--help
输出

由ypnos编辑: 如果只想将此限制为当前用户,则应使用pgrep而不是pidof,如下所示:

pgrep -u `id -u` application || application

您也可以尝试以下脚本:

#! /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 xcalc
如果调用脚本“runner.sh”,可以如下使用:

#! /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 xcalc

适用于pidof不起作用的情况。除此之外,您还可以使用黑客的解决方案,该解决方案也更加健壮。

您也可以尝试以下脚本:

#! /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 xcalc
如果调用脚本“runner.sh”,可以如下使用:

#! /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 xcalc

适用于pidof不起作用的情况。否则,请使用黑客的解决方案,该解决方案也更加健壮。

查看它是否已经在运行,并可以选择点击Alt+Tab?我使用的应用程序是系统托盘中的一个简单字典,不会出现在Alt+Tab中。我经常使用它,所以我在阅读文章时多次按快捷键,所以我希望只需按快捷键,它就可以快速打开。查看它是否已在运行,并可以选择按Alt+Tab?我使用的应用程序是系统托盘中的一个简单字典,而不会显示在Alt+Tab中。我经常使用它,所以我在阅读文章时多次按下快捷键,所以我希望只需按下快捷键,它就可以快速打开。据我所知,您的脚本可以确保即使有许多用户登录并使用同一个应用程序,系统范围内也只能运行一个应用程序实例?不,锁定文件绑定到用户,请参阅脚本中的变量$user。据我所知,您的脚本确保了即使有许多用户登录并使用同一应用程序,也只能有一个应用程序实例在系统范围内运行?否,锁定文件绑定到用户,请参阅脚本中的变量$user。