터미널 작업을 하다 보면, 세션이 종료되어 진행 중인 작업이 사라지는 경험을 한 적이 있을 것입니다. 특히 서버에서 장시간 실행되는 프로세스나 작업을 수행할 때, 세션이 끊어지면 큰 불편을 겪게 됩니다. 이러한 문제를 해결하기 위해 등장한 것이 바로 zmx입니다. 이 오픈소스 프로젝트는 터미널 프로세스의 세션을 지속적으로 유지할 수 있도록 도와줍니다. 이번 포스팅에서는 zmx의 주요 기능과 설치 방법, 기본 사용법에 대해 자세히 알아보겠습니다.

zmx의 주요 기능

zmx는 여러 기능을 통해 터미널 세션을 관리하는 데 필요한 다양한 기능을 제공합니다:

  1. 세션 지속성: zmx는 터미널 쉘 세션을 지속적으로 유지하여, 세션이 끊기더라도 작업을 다시 시작할 필요가 없습니다.
  2. 세션 연결 및 분리: 사용자는 세션에 연결하거나 분리할 수 있으며, 세션을 종료하지 않고도 작업을 계속할 수 있습니다.
  3. 네이티브 터미널 스크롤백: 이전 세션의 출력 내용을 쉽게 확인할 수 있도록 스크롤백 기능을 지원합니다.
  4. 다중 클라이언트 접속: 여러 클라이언트가 동일한 세션에 동시에 연결할 수 있습니다.
  5. 명령 전송: 세션에 접속하지 않고도 명령을 전송할 수 있습니다.
  6. 세션 히스토리 출력: 세션의 스크롤백 히스토리를 일반 텍스트 형식으로 출력할 수 있습니다.
  7. macOS 및 Linux 지원: zmx는 macOS와 Linux 시스템에서 작동합니다.
  8. 설치 방법

    zmx를 설치하는 방법은 여러 가지가 있습니다. 아래는 주요 설치 방법입니다:

    바이너리 파일 다운로드

    운영 체제에 맞는 바이너리를 다운로드할 수 있습니다:

    • Linux aarch64
    • Linux x86_64
    • macOS aarch64
    • macOS x86_64
    • Homebrew를 이용한 설치

      macOS 사용자는 Homebrew를 사용하여 쉽게 설치할 수 있습니다:

      brew install neurosnap/tap/zmx

      소스 코드에서 빌드

      Zig 언어의 v0.15가 설치되어 있어야 하며, 아래 명령어로 소스 코드를 클론하고 빌드할 수 있습니다:

      git clone https://github.com/neurosnap/zmx.git
      cd zmx
      zig build -Doptimize=ReleaseSafe --prefix ~/.local

      빌드 후, ~/.local/bin을 PATH에 추가하는 것을 잊지 마세요.

      기본 사용법

      zmx의 기본적인 명령어는 다음과 같습니다:

    • 세션에 연결: 세션을 생성하거나 기존 세션에 연결할 수 있습니다.
    •   zmx attach dev
    • 명령 실행: 세션에 명령을 실행하고 싶다면, run 명령어를 사용합니다.
    •   zmx run dev ls
    • 세션 분리: 현재 세션을 분리하려면, detach 명령어를 사용하거나 터미널을 닫습니다.
    •   zmx detach
    • 세션 리스트: 현재 활성화된 세션을 확인하려면, list 명령어를 사용합니다.
    •   zmx list
    • 세션 히스토리 출력: 이전 세션의 히스토리를 출력할 수 있습니다.
    •   zmx history dev | tail -100

      실무에서의 활용 시나리오

      zmx는 특히 리모트 서버 관리나 장시간 실행되는 스크립트를 다룰 때 유용합니다. 예를 들어, CI/CD 파이프라인에서 특정 작업을 실행한 후, 결과를 모니터링해야 할 때 zmx를 사용하면 유용합니다. 여러 개발자가 동시에 같은 세션에 접속하여 작업을 수행하고, 서로의 작업을 확인할 수 있는 환경을 제공합니다.

      경쟁 도구와 비교

      zmx와 유사한 기능을 제공하는 도구로는 tmux와 screen이 있습니다. 하지만 zmx는 간편한 사용성과 세션 상태 복원 기능이 뛰어나, 사용자가 더 쉽고 빠르게 작업을 이어갈 수 있도록 돕습니다. 특히, zmx는 여러 클라이언트의 동시 접속을 원활하게 처리하여 팀 작업에 최적화되어 있습니다.

      추천 대상

    • 리모트 서버에서 작업하는 개발자
    • 장시간 실행되는 프로세스를 관리해야 하는 시스템 관리자
    • 여러 사용자와 협업하는 팀

zmx는 터미널 작업을 더욱 원활하게 만들어주는 훌륭한 도구입니다. 관심 있는 분들은 zmx GitHub 페이지에서 프로젝트를 확인해 보세요!