2014-02-23 2 views
0

로그인하지 않고 각 비전 역 영역에서 여러 명령을 실행하려고합니다. 이것은 비 대화식 모드를 사용하여 가능하지만 문제는 모든 비 전역 영역에서 각 명령에 대한 스크립트를 어떻게 만들 수 있는지입니다.Solaris 비 전역 영역의 비대화 형 명령

다음은 예제입니다. 이것은 수동으로 작동하지만 스크립트를 만들 수 없습니다.

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 

영역이 설치된 상태에서 출력되는 방법은 무엇입니까? 영역이 실행중인 상태가 아닌 경우, 그것에 ps를 실행하려고 아무 소용이 없다는 것을

for zone in $(zoneadm list -civ | nawk '$2 != "global" && $3 == "running" {print $2}'); do 
    echo ==== $zone ==== 
    zlogin $zone ps -ef | grep -i oracle 
done 

참고 :

답변

0

여기에 한 가지 방법입니다.

정확히 무엇을 찾고 있는지에 따라 pgrepps에 기반한 더 나은 솔루션이 더 간단 할 수 있습니다.

편집 :

당신이 원하는 경우 비 실행 영역이 표시되는 :

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 
+0

이 내가 원하지만 존이 설치된 상태에있는 경우 OLY 것은 그것을 어떻게 할 수 다음이다 정확한 것입니다 도착 인쇄 – user2293219

+0

영역이 설치된 상태, 즉 실행 중이 아닌 경우 인쇄 할 것으로 예상되는 내용은 무엇입니까? – jlliagre

+0

my-zone2가 설치된 my-zone3이 설치된 – user2293219

관련 문제