जीएमटी पर क्रॉन जॉब्स कैसे चलाएं स्थानीय समय नहीं?


8

मैं GMT पर चलने वाली क्रोन नौकरियां कैसे बना सकता हूं, स्थानीय समय पर नहीं?

यह मेरी crontab फ़ाइल है:

#m  h           d   m   wday    command
TZ=GMT
5   0,6,12,18   *   *   *   ~/Documents/bash/transfer.sh

मेरी नौकरियां स्थानीय समय (GMT + 11) पर चल रही हैं, मैं ओएस एक्स हिम तेंदुए को चला रहा हूं, लेकिन विकास पूरा होने पर यह कोड को लिनक्स पर ले जाएगा।

लिनक्स पर्यावरण एक साझा वातावरण हो सकता है जहां मुझे कॉन्फ़िगरेशन पर कम नियंत्रण हो सकता है।



जवाबों:


8

cronसिस्टम के अलावा किसी अन्य समय क्षेत्र का उपयोग कर चलने वाली नौकरियों के सभी संस्करण नहीं ।

तुम्हारा है, तो यह संभव है कि विनिर्देश होना चाहिए TZ=GMTया TZ=UTC(कोण कोष्ठक के बिना)। कुछ मामलों में, चर होगा CRON_TZ

सबसे अच्छी बात यह है कि विशेष प्रणाली के लिए विशिष्ट प्रलेखन की जांच करें। देख लो man 5 crontab


3

यदि आपका स्थानीय समय है Europe/London। फिर:

crontab -e    # or 'cru' on some machines
>>>
# Run COMMAND at 03:15am UTC every morning
15 3 * * * [ "$(date +\%z)" = "+0000" ] && COMMAND
15 4 * * * [ "$(date +\%z)" = "+0100" ] && COMMAND
<<<

एक और उदाहरण:

यदि आपका नियमित समय +0500शिफ्ट है UTC, और आपका मौसमी समय +0600शिफ्ट है UTC। फिर +5उपरोक्त उदाहरण में निर्दिष्ट सभी घंटों में जोड़ें । इसका मतलब है क्रमशः 08:15amऔर 09:15amआपके स्थानीय समय पर चलाया जाना । तो आपकी संशोधित क्रोन लाइनें फिर इस तरह दिखाई देंगी:

crontab -e    # or 'cru' on some machines
>>>
# Run COMMAND at 03:15am UTC every morning
15 8 * * * [ "$(date +\%z)" = "+0500" ] && COMMAND
15 9 * * * [ "$(date +\%z)" = "+0600" ] && COMMAND
<<<

[संपादित करें] अपनी crontab फ़ाइल में \किसी भी प्रतिशत %वर्ण से बचना सुनिश्चित करें । कोंट्राब के रूप में उन्हें एक नईलाइन सेपरेटर की व्याख्या करता है। जैसे %-> \%


1
यदि आप समय क्षेत्र में हैं, तो ऐसी समस्याएं होंगी, जो डीएसटी का उपयोग करती हैं (उदाहरण के लिए) आपका समय-क्षेत्र कभी-कभी +01: 00 और सोमैथाइम +02: 00
इनमेनजा

2
शायद आप विस्तार से बता सकते हैं? मुझे ऐसा नहीं लगता। हम पहले से ही डीएसटी के लिए जिम्मेदार हैं। प्रत्येक मामले की अपनी क्रोन लाइन है। डीएसटी के साथ / बिना प्रत्येक के लिए 1।
ड्रीमकैट 4

यह स्वीकृत उत्तर होना चाहिए, क्योंकि यह अलग-अलग व्यवहारों के लिए ईकाइयूल कमांड की अनुमति देता है
पैट्रिक मैककैन

0

आप शायद मूल क्रोन बाइनरी को लपेट सकते हैं।

mv /usr/sbin/crond /usr/sbin/crond.real
cat > /usr/sbin/crond
#!/bin/sh
TZ=GMT
export TZ
exec crond.real ${1+"$@"}

हैलो हवलदार, क्या आप कृपया इन चरणों की व्याख्या कर सकते हैं?
यौगिक आँख

क्या आप crond को crond.real में कॉपी कर रहे हैं, फिर crond को एक छोटी स्क्रिप्ट के साथ बदल रहे हैं, जिसमें आप TZ सेट करते हैं और निर्यात करते हैं, फिर crond.real निष्पादित करते हैं?
यौगिक आँख

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