2008-10-29 16 views

उत्तर

10

क्या कोई अच्छा कारण है कि आप 1 घंटे या 2 घंटे का उपयोग क्यों नहीं कर सकते? यह निश्चित रूप से आसान होगा।

मैं व्यक्तिगत रूप से इस प्रयास नहीं किया है, लेकिन आप हर 90 मिनट चलाने के लिए क्रॉन हो रही पर यहाँ कुछ जानकारी पा सकते हैं: http://keithdevens.com/weblog/archive/2004/May/05/cron

ऊपर के लिंक से एक excert: संभव नहीं है यही कारण है कि

0 0,3,6,9,12,15,18,21 * * * <commands> 
30 1,4,7,10,13,16,19,22 * * * <commands> 
+1

कौन सी आवश्यकता है? पहली वाक्य 1.5 घंटों की आवश्यकता का सवाल करती है, दूसरा ब्लॉग पोस्ट प्रदान करता है जिसमें प्रत्येक 1.5 घंटों में यह कैसे किया जाता है। – vfilby

+1

उपरोक्त क्योंकि ब्लॉग पोस्ट सही ढंग से प्रश्न का उत्तर देता है। –

+0

यह स्पष्ट रूप से संदर्भ नहीं था कि जब मैंने इसे कम किया। इसे संपादित करने के बाद से यह संपादित किया गया है कि यह लिंक 90 मिनट के प्रश्न के संभावित समाधान के लिए है। – Alnitak

32

सामान्य cron में एक अभिव्यक्ति के साथ।

सबसे अच्छा आप कोड को संशोधित करने के बिना कर सकता है

है:

0 0,3,6,9,12,15,18,21 * * * [cmd]

30 1,4,7,10,13,16,19,22 * * * [cmd]

ये संपीड़न योग्य हो सकती है, तो आप के लिए है क्रॉन के संस्करण के आधार:

crontab में 0

0 */3 * * * [cmd]

30 1-23/3 * * * [cmd]

4

दो पंक्तियां। लाइनों के साथ:

0 0,3,6,9,12,15,18,21 * * * /usr/bin/foo 
30 1,4,7,10,13,16,19,22 * * * /usr/bin/foo 
1

आप इसे दो क्रोंटैब प्रविष्टियों के साथ कर सकते हैं।प्रत्येक हर तीन घंटे चलता है और वे 90 मिनट कुछ इस तरह की भरपाई कर रहे हैं:

0 0,3,6,9,12,15,18,21 * * *

30 1,4,7, 10,13,16,19,22 * * *

0

तुम भी fcron इस्तेमाल कर सकते हैं जो भी इस तरह के रूप में और अधिक जटिल समय विनिर्देशों स्वीकार करता है:

@ 01h30 my_cmd 
1
#! /bin/sh 

# Minute Cron 
# Usage: cron-min start 
# Copyright 2014 by Marc Perkel 
# docs at http://wiki.junkemailfilter.com/index.php/How_to_run_a_Linux_script_every_few_seconds_under_cron" 
# Free to use with attribution 

# Run this script under Cron once a minute 

basedir=/etc/cron-min 

if [ $# -gt 0 ] 
then 
    echo 
    echo "cron-min by Marc Perkel" 
    echo 
    echo "This program is used to run all programs in a directory in parallel every X minutes." 
    echo 
    echo "Usage: cron-min" 
    echo 
    echo "The scheduling is done by creating directories with the number of minutes as part of the" 
    echo "directory name. The minutes do not have to evenly divide into 60 or be less than 60." 
    echo 
    echo "Examples:" 
    echo " /etc/cron-min/1  # Executes everything in that directory every 1 minute" 
    echo " /etc/cron-min/5  # Executes everything in that directory every 5 minutes" 
    echo " /etc/cron-min/13  # Executes everything in that directory every 13 minutes" 
    echo " /etc/cron-min/90  # Executes everything in that directory every 90 minutes" 
    echo 
    exit 
fi 

for dir in $basedir/* ; do 
    minutes=${dir##*/} 
    if [ $((($(date +%s)/60) % $minutes)) -eq 0 ] 
    then 
     for program in $basedir/$minutes/* ; do 
    if [ -x $program ] 
    then 
     $program &> /dev/null & 
    fi 
     done 
    fi 
done 
-2

मेरी crontab के लिए निम्न जोड़ा गया है और काम कर रहा है

15 */1 * * * root /usr/bin/some_script.sh >> /tmp/something.log 
+0

क्या आप इस बात का विस्तार कर सकते हैं कि यह अच्छा समाधान क्यों है। –

1

*/10 * * * * root perl -e 'exit(time()%(90*60)>60)' && command

90 - यह एक और मिनट

"> 60" में एक आधे घंटे है - मैं

इसके अलावा एक मिनट के दौरान स्क्रिप्ट की शुरुआत में देरी करने की क्षमता क्रॉन को दे इस हैक की सहायता से आप किसी भी अवधि को एक मिनट के संकल्प के साथ सेट कर सकते हैं

उदाहरण के लिए प्रत्येक 71 मिनट

स्क्रिप्ट शुरू करें

* * * * * root perl -e 'exit(time()%(71*60)>60)' && command

0

आप, यदि Epoch के बाद मिनटों (, घंटे, दिन, या सप्ताह) गिनती किसी भी आवृत्ति को प्राप्त अपनी स्क्रिप्ट के शीर्ष में एक शर्त जोड़ें, और अपने crontab पर हर मिनट चलाने के लिए स्क्रिप्ट सेट कर सकते हैं :

#!/bin/bash 

minutesSinceEpoch=$(($(date +'%s/60'))) 

# every 90 minutes (one and a half hours) 
if [[ $(($minutesSinceEpoch % 90)) -ne 0 ]]; then 
    exit 0 
fi 

date(1) रिटर्न वर्तमान दिनांक, हम इसे सेकंड के रूप में युग के बाद से स्वरूपित (%s) और फिर हम बुनियादी गणित कार्य करें:

# .---------------------- bash command substitution 
# |.--------------------- bash arithmetic expansion 
# || .------------------- bash command substitution 
# || | .---------------- date command 
# || | | .------------ FORMAT argument 
# || | | |  .----- formula to calculate minutes/hours/days/etc is included into the format string passed to date command 
# || | | |  | 
# ** * * *  * 
    $(($(date +'%s/60'))) 
# * * --------------- 
# | |  | 
# | |  ·----------- date should result in something like "1438390397/60" 
# | ·-------------------- it gets evaluated as an expression. (the maths) 
# ·---------------------- and we can store it 

एक और आप इस दृष्टिकोण का उपयोग प्रति घंटा, दैनिक, या मासिक क्रॉन नौकरियों के साथ कर सकते हैं:

#!/bin/bash 
# We can get the 

minutes=$(($(date +'%s/60'))) 
hours=$(($(date +'%s/60/60'))) 
days=$(($(date +'%s/60/60/24'))) 
weeks=$(($(date +'%s/60/60/24/7'))) 

# or even 

moons=$(($(date +'%s/60/60/24/656'))) 

# passed since Epoch and define a frequency 
# let's say, every 7 hours 

if [[ $(($hours % 7)) -ne 0 ]]; then 
    exit 0 
fi 

# and your actual script starts here 
+1

हाय स्टीफनमारिक, क्योंकि आप इस मामले में दृढ़ प्रतीत होते हैं, कृपया केवल एक प्रश्न का उत्तर जोड़ें और उन लोगों को ध्वजांकित करें जो असली डुप्लिकेट हैं, सर्वोत्तम प्रश्न/उत्तर संयोजन के डुप्लीकेट के रूप में। – bummi

+0

हाय @ बुम्मी, मैंने वास्तव में "डुप्लिकेट के रूप में चिह्नित" सुविधा की खोज की। मुझे यह नहीं मिला, इसलिए मैंने पोस्ट किया। आपकी टिप्पणी के बाद से अधिक शोध करना, मुझे पता चला कि मेरे पास ध्वज प्रश्नों के लिए पर्याप्त प्रतिष्ठा नहीं है: http://meta.stackexchange.com/questions/118124/where-on-earth-is-the-mark-duplicate-ui-on -स्टैक-ओवरफ्लो सलाह के लिए धन्यवाद और मुझे स्पैम के बारे में खेद है। – stefanmaric

संबंधित मुद्दे