জিএমটি-তে স্থানীয় সময় নয় কীভাবে ক্রোন জব চালানো যায়?


8

স্থানীয় সময় নয়, আমি কীভাবে জিএমটি-তে ক্রোন জব চালাতে পারি?

এটি আমার ক্রন্টব ফাইল:

#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এবং আপনার seasonতু সময়টি +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
<<<

[সম্পাদনা] আপনার ক্রন্টব ফাইলের যে \কোনও শতাংশ %অক্ষর থেকে বাঁচতে ভুলবেন না । ক্রন্টব যেমন তাদেরকে একটি নতুন লাইনের পৃথককারী হিসাবে ব্যাখ্যা করে। যেমন %-> \%


1
আপনি যদি টাইম জোনে ডিএসটি ব্যবহার করেন তবে সমস্যা হবে (উদাহরণস্বরূপ) আপনার টাইমজোনটি প্রায়শই +01: 00 এবং কিছু থাইমিস +02: 00
অ্যানম্যানজায়

2
সম্ভবত আপনি বিস্তারিত বলতে পারে? আমি তাই মনে করি না. আমরা ইতিমধ্যে ডিএসটি অ্যাকাউন্ট করছি। প্রতিটি ক্ষেত্রে এর নিজস্ব ক্রোন লাইন থাকে। ডিএসটি সহ / ছাড়াই প্রত্যেকের জন্য 1 জন।
ড্রিমক্যাট 4

এটি গ্রহণযোগ্য উত্তর হওয়া উচিত, কারণ এটি পৃথক পৃথক আচরণের জন্য বিভিন্ন আচরণের আদেশ দেয়
প্যাট্রিক ম্যাকক্যান

0

আপনি সম্ভবত আসল crond বাইনারি মোড়ানো করতে পারে।

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

হ্যালো হ্যালোভডাল, আপনি কি এই পদক্ষেপগুলি ব্যাখ্যা করতে পারেন?
যৌগিক চোখ

আপনি crond.real এ crond কে অনুলিপি করছেন, তারপরে একটি শর্ট স্ক্রিপ্টের সাহায্যে crond কে প্রতিস্থাপন করছেন, যেখানে আপনি TZ সেট করে রফতানি করছেন, তারপরে crond.real এক্সিকিউট করবেন?
যৌগিক চোখ

অনুলিপি করা নয় তবে চলন্ত, তবে হ্যাঁ আপনার বিশ্লেষণের বাকীটি সঠিক।
hlovdal
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.