Oracle® ZFS Storage Appliance 관리 설명서, 릴리스 2013.1.5.0

인쇄 보기 종료

업데이트 날짜: 2016년 2월
 
 

List 함수 사용

  1. 동적 자식 항목이 있는 컨텍스트에서는 이러한 자식 항목을 프로그래밍적으로 반복하면 매우 유용할 수 있습니다. 이렇게 하려면 동적 자식 항목 배열을 반환하는 list 함수를 사용합니다. 예를 들어, 다음은 소비한 공간과 사용 가능한 공간을 인쇄하며 모든 프로젝트의 모든 공유를 반복하는 스크립트입니다.
    script
           run('shares');
           projects = list();
    
           for (i = 0; i < projects.length; i++) {
                   run('select ' + projects[i]);
                   shares = list();
    
                   for (j = 0; j < shares.length; j++) {
                           run('select ' + shares[j]);
                           printf("%s/%s %1.64g %1.64g\n", projects[i], shares[j],
                               get('space_data'), get('space_available'));
                           run('cd ..');
                   }
    
                   run('cd ..');
           }
  2. 이름이 "space.aksh"인 파일에 저장된 경우 스크립트를 실행하면 출력이 다음과 같습니다.
    % ssh root@koi < space.aksh
    Password: 
    admin/accounts 18432 266617007104
    admin/exports 18432 266617007104
    admin/primary 18432 266617007104
    admin/traffic 18432 266617007104
    admin/workflow 18432 266617007104
    aleventhal/hw_eng 18432 266617007104
    bcantrill/analytx 1073964032 266617007104
    bgregg/dashbd 18432 266617007104
    bgregg/filesys01 26112 107374156288
    bpijewski/access_ctrl 18432 266617007104
    ...
  3. 이 출력의 "출력 꾸미기"(프로그래밍적으로 처리하기가 더 어려움) 변형을 원하는 경우 get 명령의 출력을 직접 구문 분석합니다.
    script
           run('shares');
           projects = list();
    
           printf('%-40s %-10s %-10s\n', 'SHARE', 'USED', 'AVAILABLE');
    
           for (i = 0; i < projects.length; i++) {
                   run('select ' + projects[i]);
                   shares = list();
    
                   for (j = 0; j < shares.length; j++) {
                           run('select ' + shares[j]);
    
                           share = projects[i] + '/' + shares[j];
                           used = run('get space_data').split(/\s+/)[3];
                           avail = run('get space_available').split(/\s+/)[3];
    
                           printf('%-40s %-10s %-10s\n', share, used, avail);
                           run('cd ..');
                   }
    
                   run('cd ..');
           }
  4. 이름이 "prettyspace.aksh"인 이 새 스크립트를 실행하면 일부 출력이 다음과 같습니다.
    % ssh root@koi < prettyspace.aksh
    Password:
    SHARE                                    USED       AVAILABLE 
    admin/accounts                           18K        248G      
    admin/exports                            18K        248G      
    admin/primary                            18K        248G      
    admin/traffic                            18K        248G      
    admin/workflow                           18K        248G      
    aleventhal/hw_eng                        18K        248G      
    bcantrill/analytx                        1.00G      248G      
    bgregg/dashbd                            18K        248G       
    bgregg/filesys01                         25.5K      100G      
    bpijewski/access_ctrl                    18K        248G      
    ...