각 프로세스별로 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 로 여러 큐를 분리해 운용 가능함