我想在没有登录的情况下在每个非全局区域上运行多个命令。这可以通过使用非交互模式来实现,但问题是如何在每个非全局区域为每个命令创建脚本。
以下是一个例子。这可以手动工作,但我无法创建脚本。
zlogin my-zone1 ps -ef | grep -i oracle
zlogin my-zone2 ps -ef | grep -i oracle
zlogin my-zone3 ps -ef | grep -i oracle
tcsh>zoneadm list -civ
ID NAME STATUS PATH BRAND IP
0 global running / native shared
1 myZone1 running /export/zones/myZone1 native shared
2 myZone2 running /export/zones/myZone2 native shared
3 myZone3 installed /export/zones/myZone2 native shared
如果处于已安装状态的区域,输出将如何发生?
答案 0 :(得分:0)
这是一种方式:
for zone in $(zoneadm list -civ | nawk '$2 != "global" && $3 == "running" {print $2}'); do
echo ==== $zone ====
zlogin $zone ps -ef | grep -i oracle
done
请注意,如果区域未处于运行状态,则无需尝试在其中运行ps
。
根据您所期待的内容,基于pgrep
和ps
的更好解决方案可能更简单。
编辑:
如果您希望显示非运行区域:
zoneadm list -civ | nawk '$2 !~ "(global|NAME)" {print $2 " " $3}') | while read name status
do
echo ==== $name ====
case "$status" in
(running) zlogin $zone ps -ef | grep -i oracle ;;
(*) echo $status ;;
esac
done