क्रोनजोब के समय क्षेत्र को बदलें


10

मेरे पास एक क्रोनजॉब है जो हर दिन यूटीसी-टाइम के 9:00 बजे निष्पादित होता है। मैं GMT + 1 में हूं इसलिए यह स्थानीय समयानुसार सुबह 10:00 बजे निष्पादित होता है। जब समयक्षेत्र परिवर्तन (दिन के समय की बचत, डीएसटी के लिए) होता है, तो क्रोनजोब यूटीसी-टाइम के 9:00 बजे लेकिन स्थानीय समयानुसार सुबह 11:00 बजे तक निष्पादित होता है। लेकिन मैं चाहता हूं कि यह हमेशा 10:00 बजे निष्पादित हो, गर्मी के समय की कोई बात नहीं या नहीं। मैं उसको कैसे करू?


4
यह प्रश्न StackOverflow: stackoverflow.com/questions/29592533/…
John1024

आपका टाइमज़ोन / etc / timezone में क्या सेट है?
ट्विंकल

जवाबों:


2

/ Etc / timezone में अपनी सेटिंग जांचें। आपके द्वारा उल्लिखित प्रश्न में आप "GMT + 1" में हैं, यदि आपका टाइमज़ोन निर्धारित है, तो आपकी स्क्रिप्ट हमेशा UTC के साथ साथ एक घंटे में निष्पादित होगी। यदि आप इसे "यूरोप / पेरिस" के लिए सेट करते हैं, तो निष्पादन का समय दिन के उजाले की बचत के समय के साथ बदल जाएगा।


6

यह संभवतः आपके OS पर निर्भर करेगा और इसका कार्यान्वयन है cron। यह सबसे लोकप्रिय क्रॉन कार्यान्वयन में संभव नहीं है vixie/isc cron। से crontab(5) manpage:

LIMITATIONS
       The  cron  daemon  runs with a defined timezone. It currently does not 
       support per-user timezones. All the tasks: system's and user's will 
       be run based on the configured timezone. Even if a user specifies  
       the TZ  environment  variable  in  his crontab this will affect only 
       the commands executed in the crontab, not the execution of the crontab 
       tasks themselves.

2

@ साइरस जवाब पर विस्तार करते हुए मैंने यही किया:

मैंने एक स्क्रिप्ट बनाई जिसमें UTC ऑफसेट की जाँच की गई:

#!/bin/bash
export TZ=":US/Eastern"
if [ "$(date +%z)" == "$1" ]; then
  shift
  exec $@
fi

फिर मैं चाहता हूँ कि मैं चाहता हूँ के लिए दो crontab प्रविष्टियों को जोड़ने:

0 8 * * * run-only-with-tz.sh -0400 place_your_command_here
0 9 * * * run-only-with-tz.sh -0500 place_your_command_here

1

मैनुअल पेज से:

डेमन का उपयोग करेंगे, यदि वर्तमान में, /etc/timezoneसमयक्षेत्र के लिए परिभाषा ।

उपयोगकर्ता की crontab परिभाषाओं में पर्यावरण को फिर से परिभाषित किया जा सकता है लेकिन क्रोन केवल एक ही समय क्षेत्र में कार्यों को संभालेंगे।


1

अपने क्रोनजोब को 8:00 तक ले जाएं और एक घंटे सोएं यदि आप जीएमटी + 1 में हैं

0 8 * * * [ "$(date +\%z)" = "+0100" ] && sleep 3600; place_your_command_here

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