代码之家  ›  专栏  ›  技术社区  ›  mehdix

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

  •  1
  • mehdix  · 技术社区  · 15 年前

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

    2 回复  |  直到 15 年前
        1
  •  3
  •   ypnos    15 年前

    这在很大程度上取决于应用程序。最普通的情况是已知的进程名,它只能由您运行(也就是说,系统上没有杂散实例):

    pidof applicaton || /usr/bin/application
    

    打开一个现有的应用程序可能会很困难,而且,同样取决于应用程序。我建议你看看 alltray 思考并特别注意 alltray --help 输出。

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

    pgrep -u `id -u` application || application
    
        2
  •  2
  •   ypnos    15 年前

    您也可以尝试这样的脚本:

    #! /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不起作用的情况。另外,黑客的解决方案也更强大。