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

标签 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 终端一个不同的标题,然后在启动 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."

关于linux - Linux 中所有打开的 gnome 终端的列表或名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17241734/

相关文章:

string - 在shell脚本中获取子字符串

linux - 如何在不知道 EFI 系统表的情况下查找 MCFG 表?

linux - 获取脚本中最后一个命令的名称

linux - 如何根据公共(public)列合并文件?

shell - 在 Expect 脚本中比较字符串的 If 条件

linux - 编写一个 shell 脚本来搜索文件中的复杂字符串以及它的出现次数

linux - VFS和FS i节点的区别

c# - MonoDevelop 无法识别 MonoBehaviour

php - 在Linux上存储图像

bash - 从bash中的文件读取的行中删除换行符