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


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.