Cli 환경에서 작업을 쉽게 관리하자, Pueue!

Cli 환경에서 작업을 쉽게 관리하자, Pueue!


저는 보통 cli 환경에서 별도의 커맨드 관리자를 사용하진 않았습니다. 보통 command snippet 도구인 pet, 그리고 xargsparallel를 통해 파이프라인 / 병렬 처리를 하는 형태로 많이 사용하는데, 쓸만한 커맨드 관리도구를 하나 찾아서 글로 공유해볼까 합니다.

바로 Pueue 입니다 😁

What is Pueue

pueue는 cli 기반의 쉘 커맨드 관리자입니다. 데몬 형태로 동작하며 명령어를 백그라운드 작업으로 처리하고 관리할 수 있습니다. (등록/삭제/일시정지 등)

당연히 Parallel도 지원하기 때문에 큐에 여러 작업을 넣어놓고 병렬 처리할 수도 있습니다.

https://github.com/Nukesor/pueue

  • Rust 기반의 도구입니다. 요즘 rust 기반 도구들이 눈에 잘 들어오네요.

Installation

각 OS별로 패키지 매니저를 거의 지원합니다. rust 기반이라 cargo로 설치할 수도 있습니다.

Cargo

$ cargo install pueue

Homebrew

$ brew install pueue

다른 설치 방법은 github 참고해주세요.

Daemon

처음에 이야기드렸듯이 pueue는 데몬 기반의 도구입니다. 데몬이 구동되지 않으면 명령어를 추가하거나 상태를 조회하는 등 기본적인 동작 조차 불가능합니다.

pueued 명령을 통해 데몬을 실행할 수 있습니다. -d 옵션은 그냥 cli에서 실행하면 foreground로 동작하는데, 이를 background 처리해줍니다. 자주 사용하게 되시면 각 OS의 시작 프로그램에 등록해두고 사용하시면 편합니다.

$ pueued -d

데몬이 실행되면 아래 경로(Mac 기준)에 config 정보가 생성됩니다. 일부 옵션 값들은 명령어로 수정할 수 있지만 config를 직접 수정하는게 좀 더 디테일한 설정이 가능합니다.

  • Linux: $HOME/.config/pueue/pueue.yml.
  • MacOs: $HOME/Library/Preferences/pueue/pueue.yml
  • Windows: %APPDATA%\Local\pueue
$ cat ~/Library/Preferences/pueue/pueue.yml
---
client:
  read_local_logs: true
  show_confirmation_questions: false
  show_expanded_aliases: false
  max_status_lines: ~
daemon:
  default_parallel_tasks: 1
  pause_group_on_failure: false
  pause_all_on_failure: false
  callback: ~
  groups: {}
shared:
  pueue_directory: /Users/hahwul/.local/share/pueue
  use_unix_socket: true
  unix_socket_path: /Users/hahwul/.local/share/pueue/pueue_pluto.socket
  host: localhost
  port: "6924"
  daemon_cert: /Users/hahwul/.local/share/pueue/certs/daemon.cert
  daemon_key: /Users/hahwul/.local/share/pueue/certs/daemon.key
  shared_secret_path: /Users/hahwul/.local/share/pueue/shared_secret%

Testing!

1414

현재상태 보기

$ pueue status

명령어 추가

$ pueue add {CMD}
pueue add "subfinder -d hahwul.com"

명령어 제거

pueue remove {TASK-ID}

병렬 수행

parallel 옵션을 통해서 병렬 처리의 갯수를 변경할 수 있습니다. 기본값으론 1로 설정되어 있고, 원하는 숫자를 넣어주어 변경할 수 있습니다. 이는 그룹단위로 적용할 수도 있어서, 특정 그룹에서만 병령 처리를 수행할 수도 있습니다.

pueue parallel 5

개인적으로 병렬처리는 parallel을 사용하곤 했는데, 매니징까지 고려하면 pueue로 처리하는게 관리하기엔 더 좋을 것 같긴하네요!

$ cat domains | xargs -I % pueue add "subfinder -d %"