- Tiện ích để triển khai hệ thống hàng đợi tác vụ nhẹ hoạt động không cần cấu hình hay daemon riêng
- Hỗ trợ Linux/MacOS - có thể chạy trên các hệ thống tương thích POSIX nếu hỗ trợ flock(2)
- Hỗ trợ xếp hàng tác vụ tạm thời trên dòng lệnh (ad-hoc queuing)
- Phù hợp cho các tác vụ tuần tự như build Makefile, tải file, chạy benchmark
- Cũng có thể dùng thay cho
nohup
- Thứ tự tác vụ được đảm bảo nghiêm ngặt bằng đồng bộ hóa dựa trên timestamp đơn vị ms
- Tạo TIMESTAMP.PID cho từng tiến trình rồi dùng flock (khóa file)
- Khi các flock phía trước được mở khóa thì job tiếp theo sẽ bắt đầu
- Vì đồng bộ hóa được thực hiện ở cấp hệ thống file nên không cần polling
- Khi thêm tác vụ theo dạng
nq CMDLINE..., công cụ sẽ in ra ID tác vụ rồi chạy ở chế độ nền
- STDOUT/STDERR được chuyển hướng vào file log
- Có thể phân biệt trực quan trạng thái tác vụ bằng bit thực thi (
+x) của file log
- Phần mở rộng tên file log được tạo từ PID, giúp quản lý tác vụ thuận tiện
- Trước khi chạy là PID của
nq, sau khi chạy sẽ đổi thành PID của tác vụ thực tế
- Có thể chạy file log như shell script để chạy lại tác vụ
Khác biệt với at, batch, task-spooler
at
Công cụ chạy tác vụ vào thời điểm đã chỉ định
Thực thi lệnh tại thời gian đã lên lịch dựa trên đồng hồ hệ thống, chủ yếu dùng cho các tác vụ lên lịch một lần
batch
Chạy tác vụ khi mức tải hệ thống (load average) thấp
Mục đích là điều khiển thực thi dựa trên tải hơn là lên lịch, và được quản lý bởi daemon
task-spooler
Tự động chạy daemon để quản lý queue và hỗ trợ xử lý tác vụ tuần tự hoặc song song
Có thể chỉ định số lượng tác vụ tối đa chạy đồng thời
Có thể cấu hình queue khác nhau theo từng terminal, đồng thời truy vấn trạng thái của từng queue bằng lệnh
nq
Hoạt động không cần daemon, chỉ đơn giản quản lý queue bằng flock (khóa hệ thống file) ở cấp thư mục
Không xét đến tải hệ thống hay thời điểm lên lịch, mà chỉ đơn thuần đảm bảo thứ tự tác vụ
Có thể theo dõi log của queue theo thời gian thực bằng nqtail
Vì mỗi thư mục hoạt động như một queue độc lập, có thể tách riêng nhiều queue bằng biến môi trường $NQDIR
2 bình luận
Style code trông quá kiểu Sourceforge thời xưa nên tôi còn tưởng mình vừa quay ngược về quá khứ ấy chứ hahaha
So với thời Sourceforge thì tôi đúng là một lập trình viên còn non lắm, nên ban đầu đã tự hỏi “đó là ý gì nhỉ?”, nhưng rồi thấy có xuống dòng giữa kiểu trả về của hàm và tên hàm nên lập tức hiểu ra luôn o.o
Không biết trong đoạn mã đó còn có điểm nào khác cho thấy phong cách lập trình kiểu cũ nữa không?