Một giải pháp khác là sử dụng lpd
và tạo một "trình điều khiển in" tùy chỉnh để chạy các công việc của bạn. Một người bạn đã giúp tôi giải quyết việc này khi tôi có một yêu cầu tương tự. Tạo một kịch bản như thế này và đặt nó vào /tmp/batch.sh
:
#!/bin/bash
TMPFILE=$(mktemp /tmp/XXXX)
exec <"$6"
cat - > $TMPFILE
chmod a+x $TMPFILE
$TMPFILE
rm -f $TMPFILE
Sau đó chạy:
lpadmin -p batch1 -E -P /tmp/batch.sh
Điều đó bắt đầu một hàng đợi và bạn có thể tạo thêm bằng cách sử dụng các tên khác thay vì batch1. Thêm một công việc với:
lp -d batch1 /path/to/jobscript
Quản lý công việc với lpq
, lprm
và lpstat
. Nếu bạn muốn linh hoạt hơn với việc chuyển các đối số cho công việc của mình, bạn có thể làm cho tập lệnh batch.sh trở nên dễ dàng hơn.
(Tôi đã thử batch
trước khi đi xuống tuyến đường này, nhưng nó không hoạt động như một hàng đợi trên OSX, hoặc tôi đã sử dụng sai.)
batch
lệnh "không thực hiện bất kỳ sự song song hóa nào". Thường có độ trễ 60 giây mặc định giữa bắt đầu một công việc và bắt đầu công việc tiếp theo; tuy nhiên, không có gì để làm cho công việc tiếp theo chờ đợi công việc đầu tiên kết thúc -atd
sẽ vui vẻ khởi động các công việc từ hàng đợi ngay khi giá trị được đặt bởi-b
tùy chọn đã hết (xematd
trang hướng dẫn).