一旦 glassfish 域关闭,脚本会自动启动它吗?

一旦 glassfish 域关闭,脚本会自动启动它吗?

重现此问题的步骤:

  1. 名为 domain1 的 Glassfish 域已关闭。

  2. 现在,重新启动该域。

假设有多个域,大约 8 个,不同的服务器有不同数量的域。此外,有些名为“backup”或以“*_bak”命名的域不应启动。此外,应避免启动其中带有数字的域。此外,不应启动带有 *.tar.gz 或 *.tar 扩展名的域。不应启动名为“watchdog”的任何内容。不应启动名为“domains_mpf”的任何内容。也不应启动名为“admin_newlive”的任何内容。

My pseudocode:

domain_array = get list of all domains in an array

for (i = 0; i < domain_array.length; i++)

{
    if (path / to / asadmin stop - domain domain_array[i] == 0 && domain_array[i] != (list of excluded domains)) //assuming exit code 0 returns if the domain is already stopped
    {
        path / to / asadmin start - domain domain_array[i];
    } else

    {
        do nothing
    }

}

Output of asadmin list-domains
abcd running
efgh running
ijkl running
mnop running
qrst running
uvwx running
uvwx_bak not running
wxyz not running

答案1

您可以根据asadmin结果过滤未运行的域。类似这样的操作可以完成工作:

for i in $(asadmin list-domains|awk '/Not Running/ {print $2}')
do
asadmin start-domain "$i"
done

如果域名中有空格或特殊符号,则可能导致脚本无法运行

PS 或者您可以尝试restart-domain在某些情况下可能效果更好的命令。

如果您想在这种情况下进行搜索,awk您可以使用如下命令:

asadmin list-domains|awk 'tolower($(NF-1)" "$NF)=="not running" {print $2}'

采用新格式应该是:

asadmin list-domains|awk 'tolower($(NF-1)" "$NF)=="not running" {print $1}'

要排除带有数字的域,_bak_backup可以尝试以下操作:

asadmin list-domains|awk 'tolower($(NF-1)" "$NF)=="not running" &&  !/_bak/ && !/_backup/ && !/[0-9]/ {print $1}'

相关内容