- किसी अलग configuration या daemon के बिना काम करने वाली हल्की job queue system को लागू करने के लिए utility
- Linux/MacOS सपोर्ट - POSIX-compatible systems पर flock(2) सपोर्ट होने पर चल सकता है
- command-line आधारित ad-hoc queuing सपोर्ट
- Makefile build, file download, benchmark run जैसी sequential jobs के लिए उपयुक्त
nohup के विकल्प के रूप में भी इस्तेमाल किया जा सकता है
- job order को ms-स्तर timestamp आधारित synchronization के जरिए सख्ती से सुनिश्चित करता है
- हर process के लिए TIMESTAMP.PID बनाता है और flock(file lock) करता है
- पहले वाले flock unlock होने पर अगला job शुरू होता है
- file system स्तर पर synchronization होने से polling की ज़रूरत नहीं
nq CMDLINE... रूप में job को queue में जोड़ने पर job ID प्रिंट होती है और यह background में चलता है
- STDOUT/STDERR को log file में redirect किया जाता है
- log file के execute bit (
+x) से job status को visually अलग पहचानना संभव
- log filename extension PID से बना होता है, जिससे job management आसान होता है
- run से पहले
nq का PID, run के बाद असली job PID में बदल जाता है
- log file को shell script की तरह चलाकर job को फिर से चलाया जा सकता है
at, batch, task-spooler से अंतर
at
तय समय पर job चलाने का टूल
यह system clock के आधार पर scheduled समय पर command चलाता है और मुख्यतः one-time scheduled jobs के लिए उपयोग होता है
batch
system load average कम होने पर job चलाता है
इसका उद्देश्य scheduling से ज़्यादा load-based execution control है, और इसे daemon मैनेज करता है
task-spooler
queue को मैनेज करने के लिए daemon अपने-आप चलाता है और sequential या parallel job processing सपोर्ट करता है
एक साथ चलने वाली अधिकतम jobs की संख्या तय की जा सकती है
हर terminal के लिए अलग queue बनाई जा सकती है, और हर queue की स्थिति command से देखी जा सकती है
nq
यह daemon के बिना काम करता है और केवल directory-स्तर file system lock (flock) से queue मैनेज करता है
यह system load या scheduled समय को नहीं देखता, बल्कि सिर्फ job order की गारंटी देता है
queue logs को nqtail से real time में देखा जा सकता है
हर directory एक स्वतंत्र queue की तरह काम करती है, इसलिए environment variable $NQDIR से कई queues अलग-अलग चलाए जा सकते हैं
2 टिप्पणियां
कोड स्टाइल इतनी पुरानी Sourceforge स्टाइल की है कि मुझे लगा मैं अतीत में लौट गया हूँ, हाहा।
Sourceforge के दौर से तुलना करें तो मैं अभी बहुत जूनियर डेवलपर हूँ, लेकिन पहले समझ नहीं आया कि इसका क्या मतलब है; फिर फ़ंक्शन के return type और नाम के बीच line break जाता हुआ देखा तो बात समझ आ गई o.o
क्या उस कोड में ऐसी कोई और पुरानी coding style भी दिखती है?