सप्ताह के crontab दिन बनाम महीने का दिन?


14

मैंने इसे / etc / crontab पर कुछ अलग linux और freebsd सिस्टम में जोड़ा:

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * 2 root /sbin/shutdown -r now

मैं हर महीने की 3 तारीख को एक रिबूट चाहता हूं। हालांकि, सभी सिस्टम इस महीने (19) के 3 बुधवार को रिबूट हो गए।

मैं क्या गलत कर रहा हूं?

अपडेट : नीचे रॉनन के जवाब के लिए धन्यवाद, लगता है कि नीचे संशोधन काम करेगा, क्या कोई पुष्टि कर सकता है या क्या यह करने का एक बेहतर तरीका है?

# monthly reboot: 3rd Tuesday of every month
56 07 15-21 * * root test $(date +\%u) -eq 2 && /sbin/shutdown -r now

जवाबों:


16

पर एक नजर है man 5 crontab

नोट: एक कमांड के निष्पादन का दिन दो क्षेत्रों द्वारा निर्दिष्ट किया जा सकता है - महीने का दिन, और सप्ताह का दिन। यदि दोनों फ़ील्ड प्रतिबंधित हैं (यानी, * नहीं हैं), कमांड तब चलाया जाएगा जब या तो फ़ील्ड वर्तमान समय से मेल खाती है। उदाहरण के लिए, `` 30 4 1,15 * 5 'प्रत्येक महीने की 1 और 15 तारीख को और प्रत्येक शुक्रवार को 4:30 बजे कमांड चलाने का कारण होगा। हालाँकि, कमांड में एक परीक्षण जोड़कर वांछित परिणाम प्राप्त कर सकते हैं (नीचे अंतिम उदाहरण फ़ाइल में देखें)।

इसलिए आपके सर्वर को हर दिन 15-21 और प्रत्येक टूडे से पुनः आरंभ करना चाहिए।

मैनपावर के उदाहरण पर एक नज़र डालें:

# Run on every second Saturday of the month
0 4 8-14 * *    test $(date +%u) -eq 6 && echo "2nd Saturday"

6
यह गंभीरता से एक डिज़ाइन बग जैसा लगता है। अगर मैं हर दिन 15-21 से चाहता था और प्रत्येक मंगलवार को मैं दो अलग-अलग crontab प्रविष्टियाँ करता। एक अलग परीक्षा का सहारा लेना एक बदसूरत हैक है। उस ने कहा, एक समाधान प्रदान करने के लिए धन्यवाद!
लारेंस गोन्साल्वेस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.