처음엔 RabbitMQ를 생각했었는데, 간단한 큐잉을 위해서 저거까지 써야하나 고민이 들었습니다. 그래서 생각을 정리한걸론 직접 만들자 vs 좀 더 찾아보자 였고 찾아본 결과 nq와 pueue로 압축되었습니다. 둘 다 간단한 툴이며, 그냥 개인적인 환경 구성 상 nq가 깔끔하게 설치되길래 nq로 정했습니다. (만드는게 베스트이긴한데, 할 일은 산더미..)
Installing nq
# if on linux
$ apt install nq
# if on Mac
$ brew install nq
리눅스 패키지 관리자들(apt, yum, pacman 등)을 지원하고 HomeBrew 또한 지원하기 때문에 상대적으로 설치가 쉽습니다. 사실 Pueue도 Cobra로 바로 설치가 가능하지만, 테스트한다고 Rust 개발 환경 때문에... 좀 에러가 있습니다.
$ nq
usage: nq [-q] [-w ... | -t ... | CMD...]
Usage
자 ...-h
나 --help
를 봐도 똑같습니다. 정보를 정말 안줍니다. 구글링해서 옵션을 정리해봅시다.nq
$ nq
usage: nq [-c] [-q] [-w ... | -t ... | CMD...]
$ nq [your commands]
-q : nq는 기본적으로 job id를 리턴해줍니다. -q 옵션으로 안보이게 끌 수 있습니다.
-c : job을 모두 지웁니다(clean jobs)
-w : job이 완료까지 대기합니다.
-t : 대기하는 job이 있느지 테스트합니다.
fq
fq 현재 실행 중인 작업의 로그를 출력하여 작업이 완료되면 종료하는 보조적인 툴입니다.$ fq [your job id]
-a : 모든 job의 결과 출력
-n : 기다리지 않습니다 (no wating)
-q : job 당 하나의 행만 출력
Test
간단하게 테스트해봅니다. nq에 2가지 job을 추가합니다. (sleep 10, 5)그럼
sleep 10
이 우선 실행되고 해당 명령이 완료되면 sleep 5
가 실행됩니다. fq로 출력을 받았기 때문에 10초 후에 맨 아래 구문이 찍힙니다.$ nq sleep 10
,16f134fd88a.32350
$ nq sleep 5
,16f134fde8c.32353
$ fq -q
==> ,16f134fd88a.32350 exec 'nq' 'sleep' '10'
==> ,16f134fde8c.32353 exec 'nq' 'sleep' '5'
Conclusion
사실 nq 자체가 기능이 많진 않아서 직접 짜는게 더 편할수도 있습니다. (확장성 측면에서)다만 간단한 작업에는 이만한 도구가 없는 것 같은데, 잘 활용하면 여러가지 포인트로 사용할 수 있을 것 같네요 :)
Reference
https://github.com/leahneukirchen/nqhttps://github.com/leahneukirchen/nq/commit/381576322800ee3afe3246fadaf74d61377951ba
https://github.com/leahneukirchen/nq/commit/871185b1ba7e1cfb41be9290e9c166190b7b1a5d
![]() |
HAHWULSecurity engineer, Gopher and H4cker! |
0 개의 댓글:
Post a Comment