연산 세션

Backend.AI Web-UI 에서 가장 많이 방문하게 될 페이지는 Sessions 와 Storage 페이지입니다. Sessions 페이지에서는 컨테이너 기반의 연산 세션을 조회하거나 생성 및 사용할 수 있고, Storage 페이지에서는 데이터를 보관하는 저장 폴더를 생성할 수 있습니다. 여기서는 Sessions 페이지에서 컨테이너 기반의 연산 세션을 생성하고 각종 웹 애플리케이션을 활용하는 방법을 알아봅니다.

새로운 세션 시작하기

사용자 계정으로 로그인 후 좌측 메뉴의 Sessions 를 클릭하여 Sessions 페이지로 이동합니다. Sessions 페이지는 새로운 연산 세션을 시작하거나 이미 실행 중인 연산 세션을 관리할 때 사용할 수 있습니다.

../_images/sessions_page.png

새로운 연산 세션을 시작하려면 START 버튼을 클릭하세요. 다음과 같은 마법사 형식의 대화상자가 뜹니다.

../_images/session_launch_dialog_1.png

먼저, 세션 타입을 interactive 또는 batch 모드 중에서 고릅니다. 그 다음, 사용하려는 언어 환경(Environments)과 버전(Version)을 선택합니다. 나머지 항목은 필수가 아닙니다. 각 항목에 대한 자세한 설명은 다음을 참고 하십시오.

  • Session type: 세션의 형태를 결정합니다. 현재 가능한 세션 형태는 “Interactive” 와 “Batch” 두 가지가 있습니다. 두 형태의 주요한 차이점은 다음과 같습니다:

    • Interactive 형태 연산 세션
      • Backend.AI 초기 버전부터 지원하던 형태입니다.
      • 사용자가 별도의 실행 스크립트를 지정하지 않고 일단 세션을 생성한 후 상호 작용하는 방식으로 세션을 사용하게 됩니다.
      • 사용자가 명시적으로 삭제하지 않는 한 세션은 자동 삭제되지 않습니다. 다만, 관리자가 별도의 세션 자동 수거 설정을 켜둔 경우에는, 그 조건에 따라 자동으로 삭제될 수도 있습니다.
    • Batch 형태 연산 세션
      • Backend.AI 22.03 부터 GUI 를 통해 제공합니다. 다만, CLI 의 경우에는 그 이전부터 지원하고 있었습니다.
      • 사용자가 연산 세션을 생성할 때 실행할 스크립트를 미리 지정합니다.
      • 자원이 할당되는 즉시 해당 스크립트를 실행하고, 스크립트가 종료되는 그 즉시 연산 세션을 자동으로 삭제합니다. 따라서, 실행할 코드가 사전에 정의되어 있거나 작업을 파이프라이닝 하는 경우에는, 연산 서버팜의 자원을 보다 효율적으로 활용할 수 있는 장점이 있습니다.
      • 연산 세션 시작 시점을 지정할 수 있습니다. 다만, 시작 시점에 반드시 연산 세 션이 자원을 할당받을 수 있는 것은 아닙니다(자원 부족 등의 이유로 PENDING 상태에 계속 머물 수 있습니다). 시작 시점 이전에는 자원이 있어도 연산 세션을 스케줄링 하지 않는 개념으로 이해하는 것이 정확합니다.
    ../_images/session_type_batch.png
  • Environments: TensorFlow, PyTorch, C++ 등과 같은 연산 세션의 기본 환경을 지정합니다. TensorFlow를 선택하면 연산 세션에서 TensorFlow 라이브러리를 사용할 수 있습니다. 다른 환경을 선택하면 해당 환경이 기본적으로 설치된 연산 세션을 생성하게 됩니다.

  • Version: 환경의 버전을 선택합니다. 예를 들어, TensorFlow 환경에서는 1.15, 2.3 등과 같은 버전을 선택할 수 있습니다.

  • Session name: 생성할 연산 세션의 이름을 지정할 수 있습니다. 지정하면 Session Info에 이 이름이 나타나므로 연산 세션의 구분이 용이합니다. 지정하지 않으면 임의의 이름이 자동으로 지정됩니다. 세션 이름은 4-64자 사이의 알파벳 또는 숫자만 받아들이며, 공백은 허용되지 않습니다.

  • Set Environment Variable: 사용자가 연산 세션에 환경 변수를 설정할 수 있는 인터페이스를 제공합니다. 사용 방법은 세션 생성하기 전에 환경 변수를 추가하는 방법 섹션을 참고하십시오.

하단의 우측 화살표 버튼을 클릭하여 다음 설정 페이지로 넘어갑니다. CONFIRM AND LAUNCH 버튼을 클릭하여 바로 연산 세션을 생성할 수도 있습니다. 이 경우, 다른 페이지에 있는 설정은 모두 기본으로 설정되는 값을 사용합니다.

../_images/session_launch_dialog_2.png

여기서는 연산 세션에 마운트 할 데이터 폴더를 지정할 수 있습니다. 연산 세션이 삭제되면 기본적으로 모든 데이터가 함께 삭제되지만, 여기서 마운트 한 폴더에 저장된 데이터는 삭제되지 않습니다. 마운트 폴더에 저장된 데이터는 다른 연산 세션을 생성할 때 다시 마운트하여 재사용 할 수도 있습니다. 폴더를 마운트하고 연산 세션을 실행하는 방법에 대한 정보는 연산 세션에 폴더 마운트 장을 참고하십시오. 여기서는 폴더를 마운트 하지 않고 그냥 지나가겠습니다. 우측 화살표 버튼을 클릭하십시오.

../_images/session_launch_dialog_3.png

이 페이지에서는 생성할 연산 세션이 할당할 자원을 설정할 수 있습니다.

  • Resource Group: 연산 세션을 생성할 자원 그룹을 지정합니다. 자원 그룹은 각 사용자가 접근할 수 있는 호스트 서버를 묶은 단위이며, 주로 같은 종류의 GPU 자원을 보유하고 있는 서버들을 하나의 자원 그룹으로 설정합니다. 관리자는 서버를 종류별로 구분하여 자원 그룹으로 묶고, 사용자가 사용할 수 있는 자원 그룹의 종류를 지정할 수 있습니다. 사용자는 관리자가 허가한 자원 그룹 서버에만 연산 세션을 생성할 수 있습니다. 자원 그룹이 여러 개인 경우 원하는 그룹을 선택할 수 있지만, 하나만있는 경우에는 변경할 수 없습니다.
  • Resource allocation: 연산 세션에 할당할 CPU, 메모리, GPU 등의 자원량을 사전 정의해 둔 템플릿입니다. 관리자는 자주 사용하는 자원 설정을 미리 저장해두고 사용할 수 있습니다.

Resource allocation에 정의된 템플릿 이외의 자원을 할당하고 싶다면, Custom allocation을 클릭합니다. 다음과 같은 자원 설정 고급 패널이 열리고, 허가된 자원 내에서 원하는 만큼의 자원을 설정할 수 있습니다.

../_images/session_launch_dialog_3-custom-alloc.png

각 항목의 의미는 다음과 같으며, 우측의 정보(I) 버튼을 클릭해서 확인할 수도 있습니다.

  • CPU: 연산 세션에 할당할 CPU 코어의 수. 최대값은 사용자에게 적용되는 자원 정책에 따라 달라집니다.
  • RAM: 연산 세션에 할당할 메모리의 용량 (GB). 최대값은 사용자에게 적용되는 자원 정책에 따라 달라집니다.
  • Shared Memory: 연산 세션에 할당할 공유 메모리의 용량 (GB). RAM에 설정된 메모리 중 일부를 떼어 공유 메모리로 사용합니다. 따라서, RAM에 지정된 양보다 클 수 없습니다.
  • GPU: 연산 세션에 할당할 GPU 단위. 최대값은 사용자에게 적용되는 자원 정책에 따라 달라집니다.
  • Sessions: 지정된 설정으로 생성할 연산 세션의 수. 동일한 연산 세션을 한꺼번에 생성할 필요가 있을 때 지정할 수 있습니다.

Backend.AI 에서는 고성능 컴퓨팅 최적화에 관련된 값을 설정할 수 있습니다. 더 자세한 정보를 확인하시려면, 가속 컴퓨팅 최적화하기 섹션을 참고하십시오

자원 설정을 마쳤으면, 우측 화살표 버튼을 클릭하여 다음 페이지로 진행합니다.

../_images/session_launch_dialog_4.png

마지막 페이지에 도착했습니다. 이전 페이지에서 설정한 연산 세션 환경, 자원 할당량과 마운트 정보, 설정된 환경변수 등의 정보를 볼 수 있습니다. 원하는 설정인지 마지막으로 확인한 후 LAUNCH 버튼을 클릭합니다. 만약, 변경하고 싶은 설정이 있다면 왼쪽 화살표 버튼을 클릭하여 이전 페이지로 돌아갈 수 있습니다.

../_images/no_vfolder_notification_dialog.png

아무 폴더를 마운트 하지 않았다는 경고 대화 상자가 나타납니다. 이번에는 경고를 무시하고 LAUNCH 버튼을 클릭하여 진행합니다.

Running 탭에서 새로운 연산 세션이 생성되는 것을 확인합시다.

../_images/session_created.png

RUNNING 탭에서 현재 실행중인 세션에 대한 정보를 확인할 수 있습니다. 여기서는 interactive, batch 타입의 세션 모두 보여줍니다. BATCH 탭과 INTERACTIVE 탭은 각 타입에 해당하는 세션들만 보여주는데, 이 때 종료된 세션은 해당하지 않습니다. FINISHED 탭에는 종료 된 세션 목록이 표시되고 OTHERS 탭에는 오류가 있는 컴퓨팅 세션이 표시됩니다. 세션 별로 세션 환경, 할당 및 사용 자원량, 세션 시작 시간 등의 정보를 확인할 수 있습니다.

주석

수퍼어드민의 경우 현재 클러스터에서 실행 중인 (또는 종료된) 모든 세션 정보를 확인할 수 있고, 일반 사용자의 경우에는 자신이 사용한 세션만 조회 가능합니다.

주석

간헐적인 네트워크 접속 불량 등의 문제로 세션 리스트가 정상적으로 표시되지 않는 경우가 발생할 수 있습니다. 이 때는 브라우저 페이지를 갱신해서 해결할 수 있습니다.

../_images/session_list_status.png ../_images/session_status_detail_information.png

Backend.AI 는 PENDING, TERMINATED, CANCELLED 세션에 대한 상세 상태 정보를 제공합니다. 특히, PENDING 세션의 경우, 세션이 스케줄링 되지 않고 PENDING 상태에 머물러 있는 이유를 알 수 있어 유용합니다. 상세 정보를 확인하려면, 각 세션 상태를 나타내는 부분 바로 옆에 있는 물음표 아이콘을 클릭하십시오.

../_images/resource_stat_and_session_list.png

자원 통계는 화면 상단에 표시됩니다. 현재 사용중인 자원의 양과 할당 가능한 총 자원의 양을 확인할 수 있습니다. 디스플레이 바는 상단과 하단으로 나뉩니다. 상단은 현재 스케일링 그룹의 자원 할당 상태를 나타내고 하단은 접근 가능한 총 자원의 할당 상태를 나타냅니다.

  • (현재 스케일링 그룹 내에서 사용자가 할당한 자원의 양) / (현재 스케일링 그룹 내에 서 사용자 할당 가능한 자원의 총합)
  • (사용자가 할당한 총 자원 양) / (사용자가 할당한 총 자원 양 + 현재 스케일링 그룹 내에서 사용자가 할당 가능한 자원의 총합)

주석

만약 GPU 자원이 FGPU 로 표시되어 있다면, 이는 서버가 GPU 자원을 가상화된 형태로 제공하고 있다는 것을 의미합니다. Backend.AI 는 하나의 물리 GPU 를 여러 개로 분할해서 여러 사용자가 나누어 사용할 수 있는 가상화 기술을 지원하고 있습니다. 따라서, GPU 연산 소요가 크지 않은 작업을 수행하고자 할 경우에는 GPU 의 일부만 할당하여 연산 세션을 생성 할 수 있습니다. FGPU 가 실제로 할당하는 GPU 자원의 양은 관리자 설정에 따라 시스템 별로 다양할 수 있습니다.

예를 들어, 관리자가 하나의 GPU 를 다섯 조각으로 분할 설정한 경우, 5 FGPU 가 1 물리 GPU, 또는 1 FGPU 가 0.2 물리 GPU 를 뜻합니다. 이 때 1 FGPU 를 설정하여 연산 세션을 생성하면, 그 세션에서는 0.2 물리 GPU 에 해당하는 SM(streaming multiprocessor) 과 GPU 메모리를 활용할 수 있습니다.

Jupyter Notebook 사용하기

이미 실행 중인 연산 세션을 사용하고 관리하는 법에 관해 살펴보겠습니다. 세션 리스트의 Control 열을 보면 몇 가지 아이콘이 있습니다. 제일 첫 아이콘을 클릭하면 다음 그림과 같이 앱 런처가 뜨면서 해당 세션이 지원하는 몇 가지 앱 서비스가 뜨게 됩니다. 앱 런처 대화창은 연산 세션 생성 직후 자동으로 열리기도 합니다.

../_images/app_launch_dialog.png

주석

앱 아이콘 아래에는 두 가지 체크 옵션이 있습니다. 각 항목을 체크하고 앱을 띄우면 다음과 같은 기능이 반영됩니다:

  • Open app to public : 앱을 외부에 공개합니다. 기본적으로 터미널 및 Jupyter Notebook 서비스와 같은 웹 서비스는 별도 인증을 거치므로 서비스 URL을 알고 있더라도 다른 사용자가 액세스 할 수 없습니다. 그러나이 옵션을 선택하면 서비스 URL(및 포트 번호)을 아는 사람이 접근하고 사용할 수 있습니다. 물론 사용자가 서비스에 접근하려면 네트워크 경로가 있어야합니다.
  • Try preferred port: 이 옵션을 선택하지 않으면 Backend.AI에서 미리 준비한 포트 풀에서 웹 서비스의 포트 번호가 무작위로 할당됩니다. 이 항목을 체크하고 특정 포트 번호를 입력하면 입력한 포트 번호를 먼저 시도합니다. 그러나 포트가 포트 풀에 존재하지 않거나 다른 서비스가 이미 포트를 사용 중일 수 있기 때문에 원하는 포트가 항상 할당된다는 보장은 없습니다. 이 경우 포트 번호는 임의로 할당됩니다.

시스템 설정에 따라, 이 옵션들은 보이지 않을 수도 있습니다.

Jupyter Notebook 을 클릭해봅시다.

../_images/jupyter_app.png

새로운 창이 뜨면서 Jupyter Notebook 이 실행되는 것을 확인할 수 있습니다. 이 Notebook 은 실행 중인 연산 세션 내부에서 생성된 것으로, 별다른 설정 없이 버튼 클릭만으로 손쉽게 사 용할 수 있습니다. 또한, 연산 세션이 기본적으로 제공하는 언어 환경 및 라이브러리를 그대로 활용할 수 있어 별도의 패키지 설치 과정이 필요 없습니다. 자세한 Jupyter Notebook 사용 법은 공식 문서 등을 참고하시기 바랍니다.

Notebook 의 파일 탐색기에서 id_container 파일은 private SSH key 를 담고 있습니다. 필요할 경우 다운로드 하여 컨테이너로의 SSH/SFTP 접속에 이용할 수 있습니다.

우측 상단의 NEW 버튼을 클릭한 후 Backend.AI 용 Notebook 을 선택하면 새로운 코드를 입력할 수 있는 ipynb 창이 뜹니다.

../_images/backendai_notebook_menu.png

이 창에서 세션 환경에 맞는 코드를 입력하고 실행해볼 수 있습니다. 코드는 Backend.AI 서버를 구성하는 노드 중 연산 세션이 실제로 생성된 노드에서 실행이 되며, 로컬 머신에는 별도 환경을 구성할 필요가 없습니다.

../_images/notebook_code_execution.png

창을 닫으면 Notebook 파일 탐색기에 방금 작업한 Untitled.ipynb 파일이 생성되어 있는 것을 확인할 수 있습니다. 여기 생성된 파일은 세션을 삭제할 경우 같이 삭제되는 것에 주의 하십시오. 생성된 파일을 세션이 사라지더라도 보존하는 방법은 폴더 섹션에서 설명합니다.

../_images/untitled_ipynb_created.png

웹 터미널 활용

세션 목록 페이지로 돌아갑니다. 이번에는 터미널을 시작하겠습니다. 컨테이너의 ttyd 앱을 사용하려면 터미널 아이콘(제어판의 두 번째 버튼)을 클릭합니다. 터미널이 새 창에 나타나고 다음 그림과 같이 셸 명령을 실행하여 연산 세션에 접근 할 수 있습니다. 명령 사용에 익숙하다면 다양한 Linux 명령을 쉽게 실행할 수 있습니다. Jupyter Notebook에서 자동으로 생성 된 Untitled.ipynb 파일이 ls 명령과 함께 나열되는 것을 볼 수 있습니다. 이는 두 앱이 동일한 컨테이너 환경에서 실행되고 있음을 보여줍니다.

../_images/session_terminal.png

만약 여기서 파일을 만들면 앞서 띄운 Jupyter Notebook 에서 즉시 그 파일을 확인할 수 있 습니다. 반대로, Jupyter Notebook 에서 편집한 파일의 변경 사항도 터미널에서 바로 확인할 수 있습니다. 같은 연산 세션을 사용하고 있기 때문입니다.

이 외에도 연산 세션이 제공하는 서비스의 종류에 따라 TensorBoard, Jupyter Lab 등과 같은 웹 기반 서비스를 이용할 수 있습니다.

연산 세션 로그 조회

돌아가고 있는 연산 세션의 Control 열의 마지막 아이콘을 클릭하면 연산 세션의 로그를 조회할 수 있습니다.

../_images/session_log.png

실행중인 세션 이름 변경하기

활성 상태에 있는 세션 이름을 변경할 수 있습니다. 세션 정보 열에 있는 편집 아이콘을 클릭한 후 새 이름을 입력하고 확인 버튼을 누르기만 하면 됩니다. 다만, 새로운 세션 이름도 세션 이름 작성 규칙 은 따라야 합니다.

../_images/session_renaming.png

연산 세션 삭제하기

특정 세션을 삭제하기 위해서는 빨간색 전원 아이콘을 누르면 됩니다. 연산 세션 내부 폴더의 데이터는 연산 세션이 종료되는 순간 같이 삭제되므로, 계속 유지해야 하는 데이터라면 마운트 한 폴더에 옮기거나 처음부터 폴더에 업로드하는 것을 권합니다.

../_images/session_destroy_dialog.png

세션 생성하기 전에 환경 변수를 추가하는 방법

Backend.AI에서는 사용자에게 더 편리한 환경을 제공하기 위해, 세션 시작 화면에서 세션에 추가될 환경 변수 추가 기능을 지원합니다. 이 기능에서 여러분은 PATH 를 비롯한 모든 환경 변수를 환경변수 설정 다이얼로그에서 환경 변수명과 환경 변수 값을 입력해서 추가할 수 있습니다.

환경 변수를 추가하려면, CONFIG 버튼을 클릭해주세요.

Env Configuration Button

그러면 환경변수 설정 다이얼로그가 띄워집니다.

이 다이얼로그에서 여러분은 환경 변수를 추가하거나, 작성한 환경 변수를 갱신하거나, 삭제할 수 있습니다. 어떤 방식으로 동작하는 지 더 자세히 알고 싶으실 경우 다이얼로그 헤더 부분에 있는 ‘i’ 버튼을 클릭해주세요.

Env Configuration info

환경 변수 명과 값을 같은 행의 입력 필드에 작성한 뒤, SAVE 버튼을 클릭해주세요. 저장된 값은 세션에 반영됩니다.

경고

환경 변수에 대해 저장하지 않은 채 다이얼로그를 닫거나, 환경 변수명 또는 환경 변수 값 중 빈 값이 있을 경우, 세션에 환경 변수로써 적용되지 않습니다. 환경 변수 명과 환경 변수 값 모두 빈 값이 아니고, SAVE 버튼을 클릭해야먄 저장되는 것을 반드시 참고해두시기 바랍니다.

Env config dialog closing confirmation

더 많은 환경 변수를 추가하고 싶을 경우, 입력 필드 첫번째 행의 오른쪽에 있는 + 버튼을 클릭하면 됩니다. 또한 환경 변수를 지우고 싶을 경우, 역시 지우고자 하는 행의 - 버튼을 클릭하면 됩니다.

만약 작성된 환경 변수 명과 환경 변수 값을 모두 지우고자 할 경우, 다이얼로그 하단에 있는 DELETE ALL 버튼을 클릭해서 모두 삭제할 수 있습니다.

가속 컴퓨팅 최적화하기

Backend.AI 는 nthread-var 의 내부 컨트롤 변수 설정 인터페이스를 제공합니다.Backend.AI 는 기본적으로 이 값을 세션의 CPU 코어 수와 같도록 설정해두며, 이는 일반적인 고성능 컴퓨팅 워크로드를 가속하는 효과가 있습니다. 그러나, 일부 멀티스레드 워크로드의 경우 OpenMP를 사용하는 다중 프로세스가 동시에 실행되어 비정상적으로 많은 스레드가 생성되고, 현저한 성능 저하가 발생할 수 있습니다. 이러한 문제를 해결하려면, 스레드 값을 1 또는 2로 조정하십시오.

Session HPC Optimization

웹 터미널 고급 사용법

위에서 사용 해보았던 웹 기반 터미널은 내부적으로 tmux 라는 유틸리티를 사용하고 있습니다. tmux 는 하나의 쉘 내에서 여러 개의 창을 띄워 다중 작업 할 수 있도록 지원하는 terminal multiplexer 로, 쉘이 닫히더라도 작업하던 내용을 보존할 수 있는 등 다양한 장점을 가지고 있습니다. 보다 강력한 터미널 기능을 활용하고 싶다면 tmux 공식 문서 및 기타 인터넷 상의 다양한 사용 예제를 참고하십시오.

여기서는 몇 가지 간단하지만 유용한 기능을 소개하겠습니다.

터미널 내용 복사하기

tmux 는 다양한 장점을 가지고 있지만 처음 접하는 사용자라면 다소 혼란스러운 부분도 있습니 다. 특히, tmux 는 자체 클립보드 버퍼를 가지고 있어 터미널의 내용을 복사할 경우 기본적으로 tmux 내에서만 붙여넣을 수 있다는 부분에서 어려움을 겪을 수 있습니다. 여기에 웹 기반 터미 널에서는 사용자 시스템의 클립보드를 tmux 에 노출시키기 어렵다는 한계가 더해져서, tmux 쉘을 사용하고 있는 상태에서는 마우스 드래그를 통해 터미널 내용을 복사한 후 사용자 컴퓨터의 다른 프로그램에 붙여넣을 수가 없습니다. 소위 말하는 Ctrl-C / Ctrl-V 가 작동하지 않는 것입니다.

만약 터미널 내용을 사용자 시스템의 클립보드로 복사하여 붙여넣기를 할 필요가 있을 때는 잠시 tmux 의 마우스 지원 설정을 끌 수 있습니다. 먼저 Ctrl-B 키를 눌러 tmux 의 제어 모드로 진입합니다. 그 후 :set -g mouse off 를 입력하고 엔터키를 누릅니다 (처음 콜론까지 입력해야 합니다). 입력하는 내용은 tmux 하단의 상태바에서 확인할 수 있습니다. 그 후 터미널에서 마우스로 원하는 텍스트를 드래그 하고 Ctrl-C 또는 Cmd-C 키를 누르면 사용자 컴퓨터의 클립보드에 해당 내용이 복사 됩니다.

마우스 지원을 끈 상태에서는 마우스 휠로 스크롤하여 터미널의 이전 페이지 내용을 확인할 수 없습니다. 이 때는 다시 마우스 지원을 켜면 됩니다. Ctrl-B 를 누른 후 이번에는 :set -g mouse on 을 입력해봅시다. 이제 마우스 휠을 스크롤하여 이전 페이지의 내용을 볼 수 있게 되었습니다.

이와 같이 Ctrl-B:set -g mouse off 또는 :set -g mouse on 을 기억하면 조금 더 편리하게 웹 터미널을 활용할 수 있습니다.

주석

Ctrl-B 키는 tmux 의 기본 제어 모드 키입니다. 만약 홈 디렉토리의 .tmux.conf 를 수정하여 다른 제어 키를 설정한 경우에는, Ctrl-B 대신 설정된 키 조합을 눌러야 합니다.

키보드를 이용해 터미널 이전 내용 확인하기

터미널 내용 복사도 하면서 터미널의 이전 내용도 확인하고 싶은 경우에도 방법이 있습니다. 바로 키보드를 이용해서 이전 내용을 확인하는 것입니다. 이번에도 Ctrl-B 를 먼저 클릭 해준 뒤 Page UpPage Down 키를 눌러 봅시다. 키보드 만으로 터미널의 이전 내용을 탐색할 수 있다는 것을 확인할 수 있습니다. 탐색 모드에서 빠져 나오려면 q 키를 눌러주면 됩니다. 이 방법을 이용하면 마우스 지원을 끈 상태에서도 터미널 이전 내용 확인이 가능합니다.

여러 개의 쉘 띄우기

tmux 의 가장 큰 장점은 하나의 터미널 창에서 여러 개의 쉘을 띄우고 사용할 수 있다는 점입니 다. 백문이 불여일견이니 Ctrl-B 키를 누른 후 c 키를 이어서 눌러봅시다. 기존 창의 내용이 사라지고 새로운 쉘 환경이 뜬 것을 확인할 수 있습니다. 그러면 기존 창은 사라진 것일까요? 그렇지 않습니다. Ctrl-B 누른 후 w 키를 눌러 봅시다. 다음과 같이 현재 tmux 상에서 열려 있는 쉘 리스트가 조회되는 것을 볼 수 있습니다. 여기서 0: 으로 시작하는 쉘이 처음 보던 쉘 환경이고, 1: 로시작하는 쉘은 방금 새로 생성한 쉘입니다. 위/아래 방향 키를 이용해서 쉘 사이를 이동할 수 있습니다. 0: 번 쉘에 커서를 가져다 두고 엔터 키를 눌러 선택 해보겠습니다.

tmux's multiple session management

첫 번째 쉘 환경이 나타나는 것을 볼 수 있습니다. 이러한 방식으로 웹 터미널 내에서 여러 쉘 환경을 사용할 수 있습니다. 현재 쉘을 종료하려면 exit 명령을 입력하거나 Ctrl-B x 키를 누른 다음 y 를 입력하십시오.

정리하면 다음과 같습니다:

  • Ctrl-B c: 새로운 tmux 쉘 생성
  • Ctrl-B w: tmux 쉘 조회 및 이동/선택
  • exit 또는 Ctrl-B x: 현재 tmux 쉘 종료

위 명령을 조합하여 여러 개의 쉘에서 동시에 다양한 작업을 수행할 수 있습니다.