जवाबों:
आप हर दस सेकंड में नौकरी का समय निर्धारित नहीं कर सकते हैं, लेकिन मुझे लगता है कि आप नौकरी को हर मिनट चलाने के लिए शेड्यूल कर सकते हैं, और 10 मिनट के अंतराल में सो सकते हैं। यह दस सेकंड के अंतराल की समय सीमा समाप्त होने से पहले आपके कमांड पर पूरा हो जाएगा, या अगला कमांड चलने पर आप ओवरलैप हो जाएंगे। यह एक अनिश्चित समाधान की तरह लगता है, लेकिन अगर आप स्क्रिप्ट के मुख्य कमांड के बहुत कम निष्पादन की गारंटी दे सकते हैं, तो यह काम करेगा।
#!/bin/bash
i=0
while [ $i -lt 6 ]; do
/run/your/command &
sleep 10
i=$(( i + 1 ))
done
मैंने पिछले हफ्ते भी इसी तरह का काम किया था। मेरा समाधान मानक क्रोन प्रविष्टियों को वांछित आवृत्ति में गुणा करना था। मेरा कॉन्ट्राब ऐसा दिखता है:
* * * * * /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 10; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 20; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 30; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 40; /usr/local/bin/php /var/www/myscript.php
* * * * * sleep 50; /usr/local/bin/php /var/www/myscript.php
यदि आप myscript.php के परिणामों की जांच करना चाहते हैं, उदाहरण के लिए डिबगिंग के लिए, बस संलग्न करें
&> /tmp/myscipt.log
ऊपर के कॉन्टैब में प्रत्येक पंक्ति। फिर stderr और stdout लॉग फ़ाइल में रीडायरेक्ट हो जाते हैं।
मैं Monit का उपयोग करता हूं और चक्र का समय 10 सेकंड तक निर्धारित करता हूं । क्रोन प्रणाली के बाहर इसे प्रबंधित करने का एक साफ तरीका है।
मैं कुछ स्क्रिप्ट्स के साथ ऐसा करता हूं, जिन्हें 15-सेकंड के अंतराल पर चलाने की आवश्यकता होती है।
यदि आप 10 सेकंड उप में जाना चाहते हैं, उदाहरण के लिए 5 सेकंड, मैं एक कार्यकर्ता को थोड़ा स्क्रिप्ट के साथ लूप बनाने की सलाह देता हूं:
#!/bin/bash
INTERVAL=5
while true; do
echo "do something"
# wait for next interval
WAIT_UNTIL=$(($(date +%s) + $INTERVAL))
while [ $(date +%s) -lt $WAIT_UNTIL ]; do
sleep 1
done
done
यदि आपको उप सेकंड में जाने की आवश्यकता है, तो तिथि कमांड में माइक्रोसेकंड जोड़ें।
* * * * * script to run
* * * * * sleep 10; script to run
* * * * * sleep 20; script to run
यहां स्क्रिप्ट को 10 सेकंड के अंतराल के साथ चलाया जा सकता है ...