

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Greengrass 명령줄 인터페이스
<a name="gg-cli"></a>

Greengrass CLI(명령줄 인터페이스)를 사용하면 디바이스의 AWS IoT Greengrass 코어와 상호 작용하여 로컬에서 구성 요소를 개발하고 문제를 디버깅할 수 있습니다. 예를 들어 Greengrass CLI를 사용하여 로컬 배포를 생성하고 코어 디바이스에서 구성 요소를 다시 시작할 수 있습니다.

[Greengrass CLI 구성 요소](greengrass-cli-component.md)(`aws.greengrass.Cli`)를 배포하여 코어 디바이스에 Greengrass CLI를 설치합니다.

**중요**  
 <a name="local-dev-tools-production-environment-warning"></a>이 구성 요소는 프로덕션 환경이 아닌 개발 환경에서만 사용하는 것이 좋습니다. 이 구성 요소는 일반적으로 프로덕션 환경에서는 필요하지 않은 정보와 작업에 대한 액세스를 제공합니다. 필요한 코어 디바이스에만 이 구성 요소를 배포하여 최소 권한 원칙을 따르세요.

**Topics**
+ [Greengrass CLI 설치](install-gg-cli.md)
+ [Greengrass CLI 명령](gg-cli-reference.md)

# Greengrass CLI 설치
<a name="install-gg-cli"></a>

다음 방법 중 하나를 사용하여 Greengrass CLI를 설치할 수 있습니다.
+ 디바이스에서 AWS IoT Greengrass 코어 소프트웨어를 처음 설정할 때 `--deploy-dev-tools` 인수를 사용합니다. 이 인수를 적용하려면 `--provision true`를 지정해야 합니다.
+ Greengrass CLI 구성 요소(`aws.greengrass.Cli`)를 디바이스에 배포합니다.

이 섹션에서는 Greengrass CLI 구성 요소 배포 단계를 설명합니다. 최초 설정 시 Greengrass CLI 설치에 대한 자세한 내용은 [자습서: AWS IoT Greengrass V2 시작하기](getting-started.md)의 내용을 참조하세요.

## 사전 조건
<a name="gg-cli-prereqs"></a>

Greengrass CLI 구성 요소를 배포하려면 다음과 같은 요구 사항을 충족해야 합니다.
+ AWS IoT Greengrass 코어 디바이스에 설치 및 구성된 코어 소프트웨어입니다. 자세한 내용은 [자습서: AWS IoT Greengrass V2 시작하기](getting-started.md) 단원을 참조하십시오.
+  AWS CLI 를 사용하여 Greengrass CLI를 배포하려면를 설치하고 구성해야 합니다 AWS CLI. 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [AWS CLI구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)을 참조하세요.
+ <a name="greengrass-cli-authorization-requirement"></a> AWS IoT Greengrass 코어 소프트웨어와 상호 작용하려면 Greengrass CLI를 사용할 권한이 있어야 합니다. 다음 중 하나를 수행하여 Greengrass CLI 사용:
  +  AWS IoT Greengrass 코어 소프트웨어를 실행하는 시스템 사용자를 사용합니다.
  + 루트 또는 관리 권한이 있는 사용자를 사용합니다. Linux 코어 디바이스에서 `sudo`를 사용하여 루트 권한을 얻을 수 있습니다.
  + 구성 요소를 배포할 때 `AuthorizedPosixGroups` 또는 `AuthorizedWindowsGroups` 구성 파라미터에 지정한 그룹에 있는 시스템 사용자를 사용합니다. 자세한 내용은 [Greengrass CLI 구성 요소 구성](greengrass-cli-component.md#greengrass-cli-component-configuration)을 참조하세요.

## Greengrass CLI 구성 요소 배포
<a name="gg-cli-deploy"></a>

다음 단계를 완료하여 Greengrass CLI 구성 요소를 코어 디바이스에 배포:

### Greengrass CLI 구성 요소 배포(콘솔)
<a name="gg-cli-deploy-console"></a>

1. [AWS IoT Greengrass 콘솔](https://console.aws.amazon.com/greengrass)에 로그인합니다.

1. 탐색 메뉴에서 **구성 요소**를 선택합니다.

1. **구성 요소** 페이지의 **퍼블릭 구성 요소** 탭에서 `aws.greengrass.Cli`을(를) 선택합니다.

1. **aws.greengrass.Cli** 페이지에서 **배포**를 선택합니다.

1. **배포에 추가**에서 **새 배포 생성**을 선택합니다.

1. **대상 지정** 페이지의 **배포 대상**에 있는 **대상 이름** 목록에서 배포할 Greengrass 그룹을 선택하고 **다음**을 선택합니다.

1. **구성 요소 선택** 페이지에서 **aws.greengrass.Cli** 구성 요소가 선택되었는지 확인하고 **다음**을 선택합니다.

1. **구성 요소 구성** 페이지에서 기본 구성 설정을 유지하고 **다음**을 선택합니다.

1. **고급 설정 구성** 페이지에서 기본 구성 설정을 유지하고 **다음**을 선택합니다.

1. **검토** 페이지에서 **배포**를 클릭합니다.

### Greengrass CLI 구성 요소 배포(AWS CLI)
<a name="gg-cli-deploy-cli"></a>

1. 디바이스에서 Greengrass CLI 구성 요소에 대한 배포 구성을 정의하는 `deployment.json` 파일을 생성합니다. 이 파일은 다음과 같습니다.

   ```
   {
     "targetArn":"targetArn",
     "components": {
       "aws.greengrass.Cli": {
         "componentVersion": "2.16.1",
         "configurationUpdate": {
           "merge": "{\"AuthorizedPosixGroups\":\"<group1>,<group2>,...,<groupN>\",\"AuthorizedWindowsGroups\":\"<group1>,<group2>,...,<groupN>\"}"
         }
       }
     }
   }
   ```
   + `target` 필드에서 `targetArn`을 다음 형식으로 배포 대상으로 지정할 사물 또는 사물 그룹의 Amazon 리소스 이름(ARN)으로 바꿉니다.
     + 사물: `arn:aws:iot:region:account-id:thing/thingName`
     + 사물 그룹: `arn:aws:iot:region:account-id:thinggroup/thingGroupName`
   + `aws.greengrass.Cli` 구성 요소 객체에서 다음과 같이 값을 지정합니다.  
`version`  
Greengrass CLI 구성 요소의 버전.  
`configurationUpdate.AuthorizedPosixGroups`  
(선택 사항) 쉼표로 구분된 시스템 그룹 목록이 포함된 문자열. 이러한 시스템 그룹에 Greengrass CLI를 사용하여 AWS IoT Greengrass 코어 소프트웨어와 상호 작용할 수 있는 권한을 부여합니다. 그룹 이름 또는 그룹 ID를 지정할 수 있습니다. 예를 들어 `group1,1002,group3`은 3개의 시스템 그룹(`group1`, `1002` 및 `group3`)에 Greengrass CLI 사용 권한을 부여합니다.  
권한을 부여할 그룹을 지정하지 않으면 Greengrass CLI를 루트 사용자(`sudo`) 또는 AWS IoT Greengrass 코어 소프트웨어를 실행하는 시스템 사용자로 사용할 수 있습니다.  
`configurationUpdate.AuthorizedWindowsGroups`  
(선택 사항) 쉼표로 구분된 시스템 그룹 목록이 포함된 문자열. 이러한 시스템 그룹에 Greengrass CLI를 사용하여 AWS IoT Greengrass 코어 소프트웨어와 상호 작용할 수 있는 권한을 부여합니다. 그룹 이름 또는 그룹 ID를 지정할 수 있습니다. 예를 들어 `group1,1002,group3`은 3개의 시스템 그룹(`group1`, `1002` 및 `group3`)에 Greengrass CLI 사용 권한을 부여합니다.  
권한을 부여할 그룹을 지정하지 않으면 Greengrass CLI를 관리자 또는 AWS IoT Greengrass 코어 소프트웨어를 실행하는 시스템 사용자로 사용할 수 있습니다.

1. 다음 명령을 실행하여 디바이스에 Greengrass CLI 구성 요소를 배포합니다.

   ```
   $ aws greengrassv2 create-deployment --cli-input-json file://path/to/deployment.json
   ```

설치 도중 구성 요소는 디바이스의 `/greengrass/v2/bin` 폴더에 있는 `greengrass-cli`에 심볼릭 링크를 추가하고 이 경로에서 Greengrass CLI를 실행합니다. 절대 경로 없이 Greengrass CLI를 실행하려면 `/greengrass/v2/bin` 폴더를 PATH 변수에 추가합니다. Greengrass CLI 설치를 확인하려면 다음 명령을 실행합니다.

------
#### [ Linux or Unix ]

```
/greengrass/v2/bin/greengrass-cli help
```

------
#### [ Windows ]

```
C:\greengrass\v2\bin\greengrass-cli help
```

------

다음 결과가 표시됩니다.

```
Usage: greengrass-cli [-hV] [--ggcRootPath=<ggcRootPath>] [COMMAND]
Greengrass command line interface

      --ggcRootPath=<ggcRootPath>
                  The AWS IoT Greengrass V2 root directory.
  -h, --help      Show this help message and exit.
  -V, --version   Print version information and exit.
Commands:
  help                Show help information for a command.
  component           Retrieve component information and stop or restart
                        components.
  deployment          Create local deployments and retrieve deployment status.
  logs                Analyze Greengrass logs.
  get-debug-password  Generate a password for use with the HTTP debug view
                        component.
```

`greengrass-cli`를 찾을 수 없는 경우 배포에서 Greengrass CLI를 설치하지 못했을 수 있습니다. 자세한 내용은 [문제 해결 AWS IoT Greengrass V2](troubleshooting.md) 단원을 참조하십시오.

# Greengrass CLI 명령
<a name="gg-cli-reference"></a>

Greengrass CLI는 AWS IoT Greengrass 코어 디바이스와 로컬로 상호 작용할 수 있는 명령줄 인터페이스를 제공합니다. Greengrass CLI 명령은 다음 형식을 사용합니다.

```
$ greengrass-cli <command> <subcommand> [arguments]
```

기본적으로 `/greengrass/v2/bin/` 폴더의 `greengrass-cli` 실행 파일은 `/greengrass/v2` 폴더에서 실행되는 AWS IoT Greengrass 코어 소프트웨어의 버전과 상호 작용합니다. 이 위치에 없는 실행 파일을 직접 호출하거나 다른 위치의 AWS IoT Greengrass 코어 소프트웨어와 상호 작용하려면 다음 방법 중 하나를 사용하여 상호 작용하려는 AWS IoT Greengrass 코어 소프트웨어의 루트 경로를 명시적으로 지정해야 합니다.<a name="greengrass-cli-set-root-path"></a>
+ `GGC_ROOT_PATH` 환경 변수를 `/greengrass/v2`로 설정합니다.
+ 다음 예제와 같이 명령에 `--ggcRootPath /greengrass/v2` 인수를 추가합니다.

  ```
  greengrass-cli --ggcRootPath /greengrass/v2 <command> <subcommand> [arguments]
  ```

모든 명령에서 다음 인수를 사용할 수 있습니다.
+ `--help`를 사용하면 특정 Greengrass CLI 명령에 관한 정보를 얻을 수 있습니다.
+ `--version`을 사용하면 Greengrass CLI 버전에 관한 정보를 얻을 수 있습니다.

이 섹션에서는 Greengrass CLI 명령을 설명하고 이러한 명령의 예제를 제공합니다. 각 명령의 개요에는 인수와 용도가 표시됩니다. 선택적 인수는 대괄호에 표시됩니다.

**Topics**
+ [구성 요소](gg-cli-component.md)
+ [배포](gg-cli-deployment.md)
+ [로그](gg-cli-logs.md)
+ [get-debug-password](gg-cli-get-debug-password.md)

# 구성 요소
<a name="gg-cli-component"></a>

`component` 명령을 사용하여 코어 디바이스의 로컬 구성 요소와 상호 작용합니다.

**하위 명령**
+ [details](#component-details)
+ [list](#component-list)
+ [재시작](#component-restart)
+ [중단](#component-stop)

## details
<a name="component-details"></a>

한 구성 요소의 버전, 상태 및 구성을 검색합니다.

**시놉시스**  

```
greengrass-cli component details --name <component-name> 
```

**인수**:  
`--name`, `-n`. 구성 요소 이름.

**출력**:  
다음 예제는 이 명령을 실행할 때 생성되는 출력을 보여줍니다.  

```
$ sudo greengrass-cli component details --name MyComponent 

Component Name: MyComponent 
Version: 1.0.0
State: RUNNING
Configuration: null
```

## list
<a name="component-list"></a>

디바이스에 설치된 각 구성 요소의 이름, 버전, 상태 및 구성을 검색합니다.

**시놉시스**  

```
greengrass-cli component list
```

**인수**:  
없음

**출력**:  
다음 예제는 이 명령을 실행할 때 생성되는 출력을 보여줍니다.  

```
$ sudo greengrass-cli component list

Components currently running in Greengrass:
Component Name: FleetStatusService
Version: 0.0.0
State: RUNNING
Configuration: {"periodicUpdateIntervalSec":86400.0}
Component Name: UpdateSystemPolicyService
Version: 0.0.0
State: RUNNING
Configuration: null
Component Name: aws.greengrass.Nucleus
Version: 2.0.0
State: FINISHED
Configuration: {"awsRegion":"region","runWithDefault":{"posixUser":"ggc_user:ggc_group"},"telemetry":{}}
Component Name: DeploymentService
Version: 0.0.0
State: RUNNING
Configuration: null
Component Name: TelemetryAgent
Version: 0.0.0
State: RUNNING
Configuration: null
Component Name: aws.greengrass.Cli
Version: 2.0.0
State: RUNNING
Configuration: {"AuthorizedPosixGroups":"ggc_user"}
```

## 재시작
<a name="component-restart"></a>

구성 요소를 다시 시작합니다.

**시놉시스**  

```
greengrass-cli component restart --names <component-name>,...
```

**인수**:  
`--names`, `-n`. 구성 요소 이름. 하나 이상의 구성 요소 이름이 필요합니다. 추가 구성 요소 이름을 지정하고, 각 이름을 쉼표로 구분할 수 있습니다.

**출력**:  
없음

## 중단
<a name="component-stop"></a>

구성 요소 실행을 중지합니다.

**시놉시스**  

```
greengrass-cli component stop --names <component-name>,...
```

**인수**:  
`--names`, `-n`. 구성 요소 이름. 하나 이상의 구성 요소 이름이 필요합니다. 필요한 경우 추가 구성 요소 이름을 지정하고, 각 이름을 쉼표로 구분할 수 있습니다.

**출력**:  
없음

# 배포
<a name="gg-cli-deployment"></a>

`deployment` 명령을 사용하여 코어 디바이스의 로컬 구성 요소와 상호 작용합니다.

로컬 배포 진행 상황을 모니터링하려면 `status` 하위 명령을 사용합니다. 콘솔을 사용하여 로컬 배포의 진행 상황을 모니터링할 수는 없습니다.

**하위 명령**
+ [생성](#deployment-create)
+ [취소](#deployment-cancel)
+ [list](#deployment-list)
+ [status](#deployment-status)

## 생성
<a name="deployment-create"></a>

지정된 구성 요소 레시피, 아티팩트 및 런타임 인수를 사용하여 로컬 배포를 생성하거나 업데이트합니다.

**시놉시스**  

```
greengrass-cli deployment create 
    --recipeDir path/to/component/recipe
    [--artifactDir path/to/artifact/folder ]
    [--update-config {component-configuration}]
    [--groupId <thing-group>]
    [--merge "<component-name>=<component-version>"]...
    [--runWith "<component-name>:posixUser=<user-name>[:<group-name>]"]...
    [--systemLimits "{component-system-resource-limits}]"]...
    [--remove <component-name>,...]
    [--failure-handling-policy <policy name[ROLLBACK, DO_NOTHING]>]
```

**인수**:  
+ `--recipeDir`, `-r`. 구성 요소 레시피 파일이 포함된 폴더의 전체 경로.
+ `--artifactDir`, `-a`. 배포에 포함할 아티팩트 파일이 포함된 폴더의 전체 경로. 아티팩트 폴더에는 다음 디렉터리 구조가 포함되어야 합니다.

  ```
  /path/to/artifact/folder/<component-name>/<component-version>/<artifacts>
  ```
+ `--update-config`, `-c`. JSON 문자열 또는 JSON 파일로 제공되는 배포에 대한 구성 인수. JSON 문자열은 다음 형식이어야 합니다.

  ```
  { \
    "componentName": { \ 
      "MERGE": {"config-key": "config-value"}, \
      "RESET": ["path/to/reset/"] \
    } \
  }
  ```

  `MERGE` 및 `RESET`은 대/소문자를 구분하며 대문자여야 합니다.
+ `--groupId`, `-g`. 배포의 대상 사물 그룹.
+ `--merge`, `-m`. 추가 또는 업데이트하려는 대상 구성 요소의 이름과 버전. `<component>=<version>` 형식으로 구성 요소 정보를 제공해야 합니다. 각 추가 구성 요소에 대해 별도의 인수를 사용하여 지정합니다. 필요한 경우 `--runWith` 인수를 사용하여 구성 요소 실행에 대한 `posixUser`, `posixGroup` 및 `windowsUser` 정보를 제공합니다.
+ `--runWith`. 일반 또는 Lambda 구성 요소 실행에 대한 `posixUser`, `posixGroup` 및 `windowsUser` 정보. `<component>:{posixUser|windowsUser}=<user>[:<=posixGroup>]` 형식으로 이 정보를 제공해야 합니다. 예를 들어, **HelloWorld:posixUser=ggc\$1user:ggc\$1group** 또는 **HelloWorld:windowsUser=ggc\$1user**를 지정할 수 있습니다. 각 추가 옵션에 대해 별도의 인수를 사용하여 지정합니다.

  자세한 내용은 [구성 요소를 실행하는 사용자 구성](configure-greengrass-core-v2.md#configure-component-user) 섹션을 참조하세요.
+ `--systemLimits`. 코어 디바이스에서 일반 및 컨테이너화되지 않은 Lambda 구성 요소의 프로세스에 적용할 시스템 리소스 제한. 각 구성 요소의 프로세스에서 사용할 수 있는 최대 CPU 및 RAM 사용량을 구성할 수 있습니다. 직렬화된 JSON 객체 또는 JSON 파일의 파일 경로를 지정합니다. JSON 객체는 다음 형식이어야 합니다.

  ```
  {  \
    "componentName": { \ 
      "cpus": cpuTimeLimit, \
      "memory": memoryLimitInKb \
    } \
  }
  ```

  각 구성 요소에 대해 다음 시스템 리소스 제한을 구성할 수 있습니다.
  + `cpus` - <a name="system-resource-limits-cpu-definition-this"></a>이 구성 요소의 프로세스가 코어 디바이스에서 사용할 수 있는 최대 CPU 시간입니다. 코어 디바이스의 총 CPU 시간은 디바이스의 CPU 코어 수와 같습니다. 예를 들어 CPU 코어가 4개인 코어 디바이스에서 이 값을 `2`로 설정하여 이 구성 요소 프로세스를 각 CPU 코어의 50% 사용량으로 제한할 수 있습니다. CPU 코어가 1개인 디바이스에서 이 값을 `0.25`로 설정하여 이 구성 요소 프로세스를 CPU의 25% 사용량으로 제한할 수 있습니다. 이 값을 CPU 코어 수보다 큰 수로 설정하면 AWS IoT Greengrass 코어 소프트웨어에서는 구성 요소의 CPU 사용량을 제한하지 않습니다.
  + `memory` - <a name="system-resource-limits-memory-definition-this"></a>이 구성 요소의 프로세스가 코어 디바이스에서 사용할 수 있는 최대 RAM(KB 단위)입니다.

  자세한 내용은 [구성 요소에 대한 시스템 리소스 제한 구성](configure-greengrass-core-v2.md#configure-component-system-resource-limits) 섹션을 참조하세요.

  이 기능은 Linux 코어 디바이스의 [Greengrass nucleus 구성 요소](greengrass-nucleus-component.md) 및 Greengrass CLI v2.4.0 이상에서 사용할 수 있습니다. AWS IoT Greengrass는 현재 Windows 코어 디바이스에서 이 기능을 지원하지 않습니다.
+ `--remove`. 로컬 배포에서 제거하려는 대상 구성 요소의 이름. 클라우드 배포에서 병합된 구성 요소를 제거하려면 다음 형식으로 대상 사물 그룹의 그룹 ID를 제공해야 합니다.

------
#### [ Greengrass nucleus v2.4.0 and later ]

  ```
  --remove <component-name> --groupId <group-name>
  ```

------
#### [ Earlier than v2.4.0 ]

  ```
  --remove <component-name> --groupId thinggroup/<group-name>
  ```

------
+ `--failure-handling-policy`. 배포가 실패할 때 실시하는 작업 정의. 두 가지 작업을 지정할 수 있습니다.
  + `ROLLBACK` – 
  + `DO_NOTHING` – 

  이 기능은 [Greengrass nucleus](greengrass-nucleus-component.md)의 v2.11.0 이상에서 사용할 수 있습니다.

**출력**:  
다음 예제는 이 명령을 실행할 때 생성되는 출력을 보여줍니다.  

```
$ sudo greengrass-cli deployment create \
    --merge MyApp1=1.0.0 \
    --merge MyApp2=1.0.0 --runWith MyApp2:posixUser=ggc_user \
    --remove MyApp3 \
    --recipeDir recipes/ \ 
    --artifactDir artifacts/

Local deployment has been submitted! Deployment Id: 44d89f46-1a29-4044-ad89-5151213dfcbc
```

## 취소
<a name="deployment-cancel"></a>

지정된 배포를 취소합니다.

시놉시스  

```
greengrass-cli deployment cancel
    -i <deployment-id>
```

인수  
`-i`. 취소할 배포의 고유 식별자. 배포 ID는 `create` 명령의 출력에 반환됩니다.

출력  
+ 없음

## list
<a name="deployment-list"></a>

마지막 10개의 로컬 배포 상태를 검색합니다.

**시놉시스**  

```
greengrass-cli deployment list
```

**인수**:  
없음

**출력**:  
다음 예제는 이 명령을 실행할 때 생성되는 출력을 보여줍니다. 배포 상태에 따라 출력에 `IN_PROGRESS`, `SUCCEEDED` 또는 `FAILED` 중 하나의 상태 값이 표시됩니다.  

```
$ sudo greengrass-cli deployment list

44d89f46-1a29-4044-ad89-5151213dfcbc: SUCCEEDED
Created on: 6/27/23 11:05 AM
```

## status
<a name="deployment-status"></a>

특정 배포의 상태를 검색합니다.

**시놉시스**  

```
greengrass-cli deployment status -i <deployment-id>
```

**인수**:  
`-i`. 배포의 ID.

**출력**:  
다음 예제는 이 명령을 실행할 때 생성되는 출력을 보여줍니다. 배포 상태에 따라 출력에 `IN_PROGRESS`, `SUCCEEDED` 또는 `FAILED` 중 하나의 상태 값이 표시됩니다.  

```
$ sudo greengrass-cli deployment status -i 44d89f46-1a29-4044-ad89-5151213dfcbc

44d89f46-1a29-4044-ad89-5151213dfcbc: FAILED
Created on: 6/27/23 11:05 AM
Detailed Status: <Detailed deployment status>
Deployment Error Stack: List of error codes
Deployment Error Types: List of error types
Failure Cause: Cause
```

# 로그
<a name="gg-cli-logs"></a>

`logs` 명령을 사용하여 코어 디바이스의 Greengrass 로그를 분석합니다.

**하위 명령**
+ [get](#logs-get)
+ [list-keywords](#logs-list-keywords)
+ [list-log-files](#logs-list-log-files)

## get
<a name="logs-get"></a>

Greengrass 로그 파일을 수집, 필터링 및 시각화합니다. 이 명령은 JSON 형식의 로그 파일만 지원합니다. nucleus 구성에서 [로깅 형식](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format)을 지정할 수 있습니다.

**시놉시스**  

```
greengrass-cli logs get
    [--log-dir path/to/a/log/folder]
    [--log-file path/to/a/log/file]
    [--follow true | false ]
    [--filter <filter> ]
    [--time-window <start-time>,<end-time> ]
    [--verbose ]
    [--no-color ]
    [--before <value> ]
    [--after <value> ]
    [--syslog ]
    [--max-long-queue-size <value> ]
```

**인수**:  
+ `--log-dir`, `-ld`. 로그 파일을 확인할 디렉터리의 경로(예: **`/greengrass/v2`/logs**). `--syslog`와 함께 사용하지 않습니다. 각 추가 디렉터리에 대해 별도의 인수를 사용하여 지정합니다. `--log-dir` 또는 `--log-file` 중 하나 이상을 사용해야 합니다. 단일 명령에서 두 인수를 모두 사용할 수도 있습니다.
+ `--log-file`, `-lf`. 사용하려는 로그 디렉터리의 경로. 각 추가 디렉터리에 대해 별도의 인수를 사용하여 지정합니다. `--log-dir` 또는 `--log-file` 중 하나 이상을 사용해야 합니다. 단일 명령에서 두 인수를 모두 사용할 수도 있습니다.
+ `--follow`, `-fol`. 발생하는 로그 업데이트 표시. Greengrass CLI는 계속 실행되고 지정된 로그에서 읽습니다. 시간대를 지정하면 모든 시간대가 종료된 후 Greengrass CLI가 로그 모니터링을 중지합니다.
+ `--filter`, `-f`. 필터로 사용할 키워드, 정규식 또는 키-값 페어. 이 값을 문자열, 정규식 또는 키-값 페어로 제공하세요. 각 추가 필터에 대해 별도의 인수를 사용하여 지정합니다.

  평가 시 단일 인수에 지정된 여러 필터가 OR 연산자로 분리되고, 추가 인수에 지정된 필터가 AND 연산자와 결합됩니다. 예를 들어 명령에 `--filter "installed" --filter "name=alpha,name=beta"`가 포함된 경우 Greengrass CLI는 키워드 `installed`와 값이 `alpha` 또는 `beta`인 `name` 키가 모두 포함된 로그 메시지를 필터링하고 표시합니다.
+ `--time-window`, `-t`. 로그 정보를 표시할 시간대. 정확한 타임스탬프와 상대 오프셋을 모두 사용할 수 있습니다. `<begin-time>,<end-time>` 형식으로 이 정보를 제공해야 합니다. 시작 시간 또는 종료 시간을 지정하지 않으면 해당 옵션의 값은 현재 시스템 날짜 및 시간으로 기본 설정됩니다. 각 추가 시간대에 대해 별도의 인수를 사용하여 지정합니다.

  Greengrass CLI는 타임스탬프에 대해 다음 형식을 지원합니다.
  + `yyyy-MM-DD`(예: `2020-06-30`). 이 형식을 사용할 때 시간은 기본적으로 00:00:00으로 설정됩니다.

    `yyyyMMDD`(예: `20200630`). 이 형식을 사용할 때 시간은 기본적으로 00:00:00으로 설정됩니다.

    `HH:mm:ss`(예: `15:30:45`). 이 형식을 사용할 때 날짜는 기본적으로 현재 시스템의 날짜로 설정됩니다.

    `HH:mm:ssSSS`(예: `15:30:45`). 이 형식을 사용할 때 날짜는 기본적으로 현재 시스템의 날짜로 설정됩니다.

    `YYYY-MM-DD'T'HH:mm:ss'Z'`(예: `2020-06-30T15:30:45Z`).

    `YYYY-MM-DD'T'HH:mm:ss`(예: `2020-06-30T15:30:45`).

    `yyyy-MM-dd'T'HH:mm:ss.SSS`(예: `2020-06-30T15:30:45.250`).

  상대 오프셋은 현재 시스템 시간에서 시간 오프셋을 지정합니다. Greengrass CLI는 상대 오프셋에 대해 `+|-[<value>h|hr|hours][valuem|min|minutes][value]s|sec|seconds` 형식을 지원합니다.

  예를 들어 현재 시간에서 1시간\$12시간 15분 사이 전의 시간대를 지정하는 인수는 `--time-window -2h15min,-1hr`입니다.
+ `--verbose`. 로그 메시지의 모든 필드 표시. `--syslog`와 함께 사용하지 않습니다.
+ `--no-color`, `-nc`. 색상 코딩 제거. 로그 메시지의 기본 색상 코딩은 굵은 빨간색 텍스트 사용입니다. ANSI 이스케이프 시퀀스를 사용하기 때문에 UNIX 계열 터미널만 지원합니다.
+ `--before`, `-b`. 일치하는 로그 항목 앞에 표시할 줄 수. 기본값은 0.
+ `--after`, `-a`. 일치하는 로그 항목 뒤에 표시할 줄 수. 기본값은 0.
+ `--syslog`. RFC3164에서 정의한 syslog 프로토콜을 사용하여 모든 로그 파일 처리. `--log-dir` 및 `--verbose`와 함께 사용하지 않습니다. syslog 프로토콜에서 사용하는 형식: `"<$Priority>$Timestamp $Host $Logger ($Class): $Message"`. 로그 파일을 지정하지 않으면 Greengrass CLI는 `/var/log/messages`, `/var/log/syslog` 또는 `/var/log/system.log` 위치에서 로그 메시지를 읽습니다.

  AWS IoT Greengrass는 현재 Windows 코어 디바이스에서 이 기능을 지원하지 않습니다.
+ `--max-log-queue-size`, `-m`. 메모리에 할당할 최대 로그 항목 수. 이 옵션을 사용하여 메모리 사용량을 최적화합니다. 기본값은 100입니다.

**출력**:  
다음 예제는 이 명령을 실행할 때 생성되는 출력을 보여줍니다.  

```
$ sudo greengrass-cli logs get --verbose \
    --log-file /greengrass/v2/logs/greengrass.log \
    --filter deployment,serviceName=DeploymentService \
    --filter level=INFO \
    --time-window 2020-12-08T01:11:17,2020-12-08T01:11:22

2020-12-08T01:11:17.615Z [INFO] (pool-2-thread-14) com.aws.greengrass.deployment.DeploymentService: Current deployment finished. {DeploymentId=44d89f46-1a29-4044-ad89-5151213dfcbc, serviceName=DeploymentService, currentState=RUNNING}
2020-12-08T01:11:17.675Z [INFO] (pool-2-thread-14) com.aws.greengrass.deployment.IotJobsHelper: Updating status of persisted deployment. {Status=SUCCEEDED, StatusDetails={detailed-deployment-status=SUCCESSFUL}, ThingName=MyThing, JobId=22d89f46-1a29-4044-ad89-5151213dfcbc
```

## list-keywords
<a name="logs-list-keywords"></a>

로그 파일을 필터링하는 데 사용할 수 있는 키워드 제안을 표시합니다.

**시놉시스**  

```
greengrass-cli logs list-keywords [arguments]
```

**인수**:  
없음

**출력**:  
다음 예제는 이 명령을 실행할 때 생성되는 출력을 보여줍니다.  

```
$ sudo greengrass-cli logs list-keywords

Here is a list of suggested keywords for Greengrass log:
level=$str
thread=$str
loggerName=$str
eventType=$str
serviceName=$str
error=$str
```

```
$ sudo greengrass-cli logs list-keywords --syslog

Here is a list of suggested keywords for syslog:
priority=$int
host=$str
logger=$str
class=$str
```

## list-log-files
<a name="logs-list-log-files"></a>

지정된 디렉터리에 있는 로그 파일을 표시합니다.

**시놉시스**  

```
greengrass-cli logs list-log-files [arguments]
```

**인수**:  
`--log-dir`, `-ld`. 로그 파일을 확인할 디렉터리의 경로.

**출력**:  
다음 예제는 이 명령을 실행할 때 생성되는 출력을 보여줍니다.  

```
$ sudo greengrass-cli logs list-log-files -ld /greengrass/v2/logs/

/greengrass/v2/logs/aws.greengrass.Nucleus.log
/greengrass/v2/logs/main.log
/greengrass/v2/logs/greengrass.log
Total 3 files found.
```

# get-debug-password
<a name="gg-cli-get-debug-password"></a>

`get-debug-password` 명령을 사용하여 [로컬 디버그 콘솔 구성 요소](local-debug-console-component.md)(`aws.greengrass.LocalDebugConsole`)에 대해 무작위로 생성된 암호를 인쇄합니다. 암호는 생성되고 8시간 후에 만료됩니다.

**시놉시스**  

```
greengrass-cli get-debug-password
```

**인수**:  
없음

**출력**:  
다음 예제는 이 명령을 실행할 때 생성되는 출력을 보여줍니다.  

```
$ sudo greengrass-cli get-debug-password

Username: debug
Password: bEDp3MOHdj8ou2w5de_sCBI2XAaguy3a8XxREXAMPLE
Password expires at: 2021-04-01T17:01:43.921999931-07:00
The local debug console is configured to use TLS security. The certificate is self-signed so you will need to bypass your web browser's security warnings to open the console.
Before you bypass the security warning, verify that the certificate fingerprint matches the following fingerprints.
SHA-256: 15 0B 2C E2 54 8B 22 DE 08 46 54 8A B1 2B 25 DE FB 02 7D 01 4E 4A 56 67 96 DA A6 CC B1 D2 C4 1B
SHA-1: BC 3E 16 04 D3 80 70 DA E0 47 25 F9 90 FA D6 02 80 3E B5 C1
```