重现此问题的步骤:
名为 domain1 的 Glassfish 域已关闭。
现在,重新启动该域。
假设有多个域,大约 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}'