Nq
유닉스 커맨드라인 Queue 도구
About
- 별도의 설정이나 데몬 없이 동작하는 경량 작업 큐 시스템을 구현하기 위한 유틸리티
- 리눅스/MacOS 지원 - POSIX 호환 시스템에서 flock(2) 지원 시 실행 가능
- 명령행 기반의 임시 작업 큐잉(ad-hoc queuing) 지원
- Makefile 빌드, 파일 다운로드, 벤치마크 실행 등 순차 작업에 적합
- nohup 대체 용도로도 활용 가능
- 각 프로세스별로 TIMESTAMP.PID 를 만들고 flock(파일 락)
- ㅤ- 앞의 flock 들이 언락되면 다음 잡을 시작
- 파일 시스템 수준에서 동기화를 수행하므로 폴링(polling) 불필요
- STDOUT/STDERR는 로그 파일로 리디렉션
- 로그 파일의 실행 비트(+x)로 작업 상태를 시각적으로 구분 가능
- 실행 전에는 nq의 PID, 실행 후에는 실제 작업 PID로 변경
- 로그 파일을 쉘 스크립트처럼 실행해 작업 재실행 가능
at, batch, task-spooler와의 차이점
at
- 지정된 시간에 작업을 실행하는 도구
- 시스템 시계 기반으로 예약된 시각에 명령을 수행하며, 주로 일회성 예약 작업에 사용됨
- batch
- 시스템 부하(load average)가 낮을 때 작업을 실행함
- 예약보다는 부하 기반 실행 제어가 목적이며, 데몬에 의해 관리됨
task-spooler
- 큐를 관리하는 데몬을 자동으로 실행하여 순차적 또는 병렬 작업 처리 지원
- 동시에 실행할 최대 작업 수를 지정할 수 있음
- 터미널별로 다른 큐를 구성할 수 있으며, 각 큐의 상태를 명령으로 조회 가능함
nq
- 데몬 없이 작동하며, 단순히 디렉터리 단위의 파일 시스템 락(flock) 으로 큐를 관리함
- 시스템 부하나 예약 시각을 고려하지 않고, 단순히 작업 순서를 보장함
- 큐의 로그를 nqtail 로 실시간 확인 가능
- 각 디렉터리가 독립적인 큐 역할을 하므로, 환경 변수 $NQDIR 로 여러 큐를 분리해 운용 가능함