Skip to content

Nq

유닉스 커맨드라인 Queue 도구

About

  • 별도의 설정이나 데몬 없이 동작하는 경량 작업 큐 시스템을 구현하기 위한 유틸리티
  • 리눅스/MacOS 지원 - POSIX 호환 시스템에서 flock(2) 지원 시 실행 가능
  • 명령행 기반의 임시 작업 큐잉(ad-hoc queuing) 지원
    • Makefile 빌드, 파일 다운로드, 벤치마크 실행 등 순차 작업에 적합
    • nohup 대체 용도로도 활용 가능
  • 작업 순서는 ms 단위 타임스탬프 기반 동기화를 통해 엄격히 보장함
    • 각 프로세스별로 TIMESTAMP.PID 를 만들고 flock(파일 락)
    • ㅤ- 앞의 flock 들이 언락되면 다음 잡을 시작
    • 파일 시스템 수준에서 동기화를 수행하므로 폴링(polling) 불필요
  • nq CMDLINE... 형태로 작업을 큐에 추가하면 작업 ID 출력 후 백그라운드에서 실행
    • STDOUT/STDERR는 로그 파일로 리디렉션
    • 로그 파일의 실행 비트(+x)로 작업 상태를 시각적으로 구분 가능
  • 로그 파일명 확장자는 PID로 구성되어 작업 관리 편리함
    • 실행 전에는 nq의 PID, 실행 후에는 실제 작업 PID로 변경
    • 로그 파일을 쉘 스크립트처럼 실행해 작업 재실행 가능

at, batch, task-spooler와의 차이점

at

  • 지정된 시간에 작업을 실행하는 도구
  • 시스템 시계 기반으로 예약된 시각에 명령을 수행하며, 주로 일회성 예약 작업에 사용됨
  • batch
  • 시스템 부하(load average)가 낮을 때 작업을 실행함
  • 예약보다는 부하 기반 실행 제어가 목적이며, 데몬에 의해 관리됨

task-spooler

  • 큐를 관리하는 데몬을 자동으로 실행하여 순차적 또는 병렬 작업 처리 지원
  • 동시에 실행할 최대 작업 수를 지정할 수 있음
  • 터미널별로 다른 큐를 구성할 수 있으며, 각 큐의 상태를 명령으로 조회 가능함

nq

  • 데몬 없이 작동하며, 단순히 디렉터리 단위의 파일 시스템 락(flock) 으로 큐를 관리함
  • 시스템 부하나 예약 시각을 고려하지 않고, 단순히 작업 순서를 보장함
  • 큐의 로그를 nqtail 로 실시간 확인 가능
  • 각 디렉터리가 독립적인 큐 역할을 하므로, 환경 변수 $NQDIR 로 여러 큐를 분리해 운용 가능함

See also

Favorite site