Linux中所有已打开的gnome终端的列表或名称

时间:2013-06-21 18:11:31

标签: linux shell

我在Oracle Linux上。我有一个shell脚本执行以下操作:

#some stuff happening here

gnome-terminal --title='my application' -x /path/my_application -param val

#some more stuff

现在,脚本很可能会多次执行。但是,如果它还没有运行,我只想启动my_application。我找到了以下代码:

ps cax | grep my_application > /dev/null
if [ $? -eq 0 ]; then
    echo "My application already running."
else
    gnome-terminal --title='my application' -x /path/my_application -param val
fi

这很好用。这是我遇到问题的地方。我有第二个shell脚本。它还运行my_application,但具有不同的参数。两个脚本可能一起执行。如果发生这种情况,则必须有两个my_application运行实例,因为它们具有不同的参数。我的想法是给每个gnome-terminal一个不同的标题,然后在开始my_application之前检查具有该标题的gnome-terminal是否已经存在。

那就是说,我可能会完全错误,所以欢迎任何建议。

总之,我有两个脚本,它们都启动相同的应用程序,但具有不同的参数。两个脚本可以一起执行,每个脚本执行多次。如果给定的脚本启动了应用程序,则在再次执行该脚本时(假设所述应用程序仍在运行),它不能再次启动应用程序。但是,启动应用程序的一个脚本不得阻止其他脚本启动同一个应用程序。

1 个答案:

答案 0 :(得分:2)

脚本1:

CMD="gnome-terminal --title='my application' -x /path/my_application -param val"

flock -n /var/lock/mylock1 $CMD || echo "My application already running."

脚本2:

CMD="gnome-terminal --title='my application' -x /path/my_application -param val"

flock -n /var/lock/mylock2 $CMD || echo "My application already running."