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

问题描述:

我在Oracle Linux上。我有一个shell脚本,可以执行以下操作:Linux中所有打开的gnome终端的列表或名称

#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终端。

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

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

脚本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." 
+0

我不知道羊群,所以感谢。但是,该特定解决方案不起作用。相反,它应该是这样的:gnome-terminal --title ='我的应用程序'-x flock -n/var/lock/mylock1/path/my_application -param val – PhilBel