मैं एक क्रोन नौकरी कैसे निर्धारित कर सकता हूं जो हर 10 सेकंड में लिनक्स में चलती है?


15

मुझे पता है कि हर मिनट कैसे करना है, लेकिन हर 10 सेकंड के बारे में कैसे?

जवाबों:


10

आप हर दस सेकंड में नौकरी का समय निर्धारित नहीं कर सकते हैं, लेकिन मुझे लगता है कि आप नौकरी को हर मिनट चलाने के लिए शेड्यूल कर सकते हैं, और 10 मिनट के अंतराल में सो सकते हैं। यह दस सेकंड के अंतराल की समय सीमा समाप्त होने से पहले आपके कमांड पर पूरा हो जाएगा, या अगला कमांड चलने पर आप ओवरलैप हो जाएंगे। यह एक अनिश्चित समाधान की तरह लगता है, लेकिन अगर आप स्क्रिप्ट के मुख्य कमांड के बहुत कम निष्पादन की गारंटी दे सकते हैं, तो यह काम करेगा।

#!/bin/bash
i=0

while [ $i -lt 6 ]; do
  /run/your/command &
  sleep 10
  i=$(( i + 1 ))
done

मैं एक ऐसी ही बात करता हूं ... मैं सिर्फ कॉन्टैब में * का उपयोग करता हूं, और फिर मेरी स्क्रिप्ट हमेशा के लिए झुंड और छोरों का उपयोग करती है, जब तक कि यह एक ताला प्राप्त नहीं कर सकता।
पीटर

22

मैंने पिछले हफ्ते भी इसी तरह का काम किया था। मेरा समाधान मानक क्रोन प्रविष्टियों को वांछित आवृत्ति में गुणा करना था। मेरा कॉन्ट्राब ऐसा दिखता है:

* * * * * /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 लॉग फ़ाइल में रीडायरेक्ट हो जाते हैं।


2
रचनात्मक क्रोन उपयोग के लिए +1
shodanshok

2
यह सबसे अच्छा समाधान IMHO है। यह स्पष्ट है कि यह क्या कर रहा है और इसे स्क्रिप्ट या तीसरे पक्ष के समाधान की आवश्यकता नहीं है।
जेरेमी

1

मैं Monit का उपयोग करता हूं और चक्र का समय 10 सेकंड तक निर्धारित करता हूं । क्रोन प्रणाली के बाहर इसे प्रबंधित करने का एक साफ तरीका है।

मैं कुछ स्क्रिप्ट्स के साथ ऐसा करता हूं, जिन्हें 15-सेकंड के अंतराल पर चलाने की आवश्यकता होती है।

देखें: zfs पूल का वृद्धिशील / निरंतर बैकअप कैसे करें?


0

क्रोन केवल एक मिनट के लिए अनुमति देता है। आप यह कोशिश कर सकते हैं -

* * * * * ( sleep 10 ; /usr/bin/wget http://api.us/application/)

0

यदि आप 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

यदि आपको उप सेकंड में जाने की आवश्यकता है, तो तिथि कमांड में माइक्रोसेकंड जोड़ें।


0
* * * * * script to run
* * * * * sleep 10; script to run
* * * * * sleep 20; script to run

यहां स्क्रिप्ट को 10 सेकंड के अंतराल के साथ चलाया जा सकता है ...


यह समाधान 5 साल पहले ही पोस्ट किया जा चुका है। आपको इसे फिर से पोस्ट करने के बजाय इसे अपवोट करना चाहिए।
गेराल्ड श्नाइडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.