समस्या वास्तव में क्रोन के साथ नहीं है - यह आपके काम के साथ है।
आपको कुछ विवरणों के लॉक के साथ अपना काम करने की आवश्यकता होगी। ऐसा करने का सबसे आसान तरीका यह है कि यह एक निर्देशिका बनाने का प्रयास किया जाए और यदि सफल रहा, तो बाहर न निकले। जब आपकी नौकरी समाप्त हो गई है और इसे बाहर निकल गया है तो इसे अगले रन के लिए तैयार निर्देशिका को हटा देना चाहिए। यहाँ एक स्क्रिप्ट का वर्णन है।
#!/bin/bash
function cleanup {
echo "Cleanup"
rmdir /tmp/myjob.lck
}
mkdir /tmp/myjob.lck || exit 1
trap cleanup EXIT
echo 'Job Running'
sleep 60
exit 0
इसे एक टर्मिनल में चलाएं, 60 सेकंड से पहले इसे दूसरे टर्मिनल में चलाएं, यह स्थिति 1 से बाहर निकल जाएगा। पहली प्रक्रिया से बाहर निकलने के बाद आप इसे दूसरे टर्मिनल से चला सकते हैं ...
संपादित करें:
जैसा कि मैंने सिर्फ झुंड के बारे में सीखा है मैंने सोचा कि मैं इस उत्तर को अपडेट करूंगा।
झुंड (1) का उपयोग करने के लिए आसान हो सकता है। इस मामले में flock -n
उपयुक्त प्रतीत होगा उदा
* * * * * /usr/bin/flock -n /tmp/myAppLock.lck /path/to/your/job
हर मिनट अपनी नौकरी चलाएंगे, लेकिन अगर फ़ाइल पर लॉक प्राप्त नहीं कर सका तो विफल हो जाएगा।