- 별도의 설정이나 데몬 없이 동작하는 경량 작업 큐 시스템을 구현하기 위한 유틸리티
- 리눅스/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 로 여러 큐를 분리해 운용 가능함