Crontab এবং /etc/cron.hourly, দৈনিক, উইকলি ব্যবহারের মধ্যে পার্থক্য


12

আমার একটি নির্ধারিত স্ক্রিপ্ট রয়েছে যা আমাদের সাবভার্সন রিপোজিটরিগুলির একটি ঘন্টার পর ঘন্টা এসভিএনসিঙ্ক ব্যাকআপ করে। আমি সমস্যা ছাড়াই মূল ক্রন্টব এ প্রবেশ থেকে এটি চালিয়ে যাচ্ছিলাম, তবে স্থির করেছিলাম যে অতিরিক্ত দৃশ্যমানতার পরিবর্তে আমি এটিকে /etc/cron.hourly থেকে চালিত করতে চাই (এবং কারণ আমাদের একজন ইঞ্জিনিয়ার দুর্ঘটনাক্রমে ক্রন্টবটি মুছে ফেলেছিল কারণ তিনি ভেবেছিলেন "ক্রোনট্যাব -r "এর অর্থ" ক্রোনট্যাব পড়ুন ;-))

ক্রোন.আরলি স্ক্রিপ্টে এসভিএনসিএনসি কমান্ডগুলি এই বার্তায় ব্যর্থ হয় যে এসভিএন সংগ্রহস্থলের জন্য এসএসএল শংসাপত্র গ্রহণ করা প্রয়োজন (এটি বার্তাটি আপনি ইন্টারেক্টিভভাবে পেয়েছেন যে ব্যবহারকারী যখন প্রথমবার এসভিএন সংগ্রহস্থলটি অ্যাক্সেস করে তবে আমি শংসাপত্রটি একবারই) স্বীকৃত বার্তা আবার আসে না)।

সুতরাং এটি আমার কাছে মনে হয় যে স্ক্রিপ্টটি ক্রোনেটবারের মধ্য দিয়ে যখন চালানো হয় তার চেয়ে ক্রোন.হওয়ারি থেকে চালিত হওয়ার সময় একটি পৃথক ব্যবহারকারীর পরিবেশে কার্যকর করা হচ্ছে। কেউ কি পার্থক্য ব্যাখ্যা করতে পারেন?

আপডেট: আমার আমার ডিসট্রোর উল্লেখ করা উচিত ছিল, আমি সেন্টস 5.1 এ অ্যানাক্রোন ব্যবহার করছি।

আপডেট 2: এখন পর্যন্ত পরামর্শের জন্য ধন্যবাদ; আমি মনে করি এটি একটি সাবভার্সন প্রশ্নের আরও পরিণত হচ্ছে। আমি সর্বদা আমার স্ক্রিপ্টগুলিতে আমার পরিবেশকে আবদ্ধ করার চেষ্টা করি, তবে এখানে সমস্যাটি হ'ল আমি নিশ্চিত নই যে পরিবেশটি কী অবস্থায় আছে (বা অভাব বোধ করছে) যা এসভিএনকে আমার স্ক্রিপ্টটি চালানোর সময় এসএসএল শংসাপত্রটি গ্রহণ করার জন্য জিজ্ঞাসা করে cron.hourly। আমি অনুমান করছি যে রান-পার্টস স্ক্রিপ্টটি কার্যকর হয় সেভাবে এটি করার কিছু।


1
আপনার পছন্দের ডিস্ট্রো এবং ক্রোন প্যাকেজ অন্তর্ভুক্ত করা কার্যকর হবে।
ড্যান কারলি

উত্তর:


4

গ্রহণযোগ্য শংসাপত্রটি কোথায় পাওয়া যায় তা জানতে আপনি '--config-dir' বিকল্পটি ব্যবহার করতে চান (উদাহরণস্বরূপ s / .Subversion ডিফল্টরূপে)।

তাই বলা হয়, আমি প্রায় নিশ্চিত আপনি আঙ্গুলসমূহ থেকে svnsync কলিং ভাল হতে চাই আছি / পরিবর্তে পোস্ট কমিট স্ক্রিপ্ট, যেমন অন্যত্র প্রস্তাব । তারপরে আপনার আয়নাটি আপনার মাষ্টার যেখানে এক ঘন্টা আগে ছিলেন তার সাথে সিঙ্ক না করে সর্বদা সিঙ্কে থাকে।


16

ডেবিয়ান / উবুন্টু সিস্টেমে ক্রোন.ডেইলি | সাপ্তাহিক | মাসিক মূল ক্রান্তাব থেকে শুরু হয়।

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

এছাড়াও মনে রাখবেন যে আপনি সম্ভবত /etc/cron.d/ এ একটি ক্রন্টব টুকরো রাখতে পারেন

আপনি দেখতে পাচ্ছেন যে এই পরিবেশ সম্পর্কে বিশেষ কিছু নেই। অন্তত ডেবিয়ান / উবুন্টুতে এটি সমস্তই মূল অ্যাকাউন্ট হিসাবে চালিত হয়।

আমি যখন স্ক্রিপ্টের একেবারে শুরুতে ক্রোন স্ক্রিপ্টগুলি লিখি আমি সর্বদা আমার PATH এবং অন্যান্য পরিবেশের ভেরিয়েবলগুলি ব্যবহার করব যা আমি ব্যবহার করব, তাই আমি নিশ্চিত হতে পারি যে এটি কোনও পরিবেশে সঠিকভাবে কাজ করবে।


6

একটি নিয়মিত সিস্টেম-প্রশস্ত ক্রন্টাব হ'ল নির্দিষ্ট ব্যবহারকারীর ক্রন্টাব এবং এতে ব্যবহারকারীর নাম ক্ষেত্র রয়েছে /etc/crontab

স্ক্রিপ্ট ব্যবহার /etc/cron.*(ঘনঘন, দৈনিক, সাপ্তাহিক, মাসিক) একটি ক্লিনার এবং সহজ উপায় (প্রতিরোধ সাধারণ সিনট্যাক্স ত্রুটি) এর জন্য নিম্নলিখিতরূপে crontab পরিবর্তন কনফিগার হয় rootব্যবহারকারী এবং এই পরিচালিত হয় দ্বারা run-partsযা ডিরেক্টরির মধ্যে স্ক্রিপ্ট বা প্রোগ্রাম চালানো। এই সমস্ত বিধিগুলি ডিফল্ট ( /etc/crontab) দ্বারা সিস্টেম-ব্যাপী ক্রন্টব এ এখনও সংজ্ঞায়িত করা হয়েছে , সুতরাং এটি একই জিনিস।

ক্রোন জবগুলি যখন পরিচালনা করা হয় তখন run-partsডিবাগ করা সহজ হয়, আপনি কোনটি স্ক্রিপ্টগুলি ঠিক চালাতে পারবেন তা পরীক্ষা করতে পারেন (সেগুলি চালিয়ে না দিয়ে):

sudo run-parts --report --test /etc/cron.daily

3

আমার প্রথম বন্য অনুমান আপনার হোম ভেরিয়েবল পরীক্ষা করা হবে।

আমার সেন্টোস সিস্টেমে, মানুষ 5 ক্রন্টব বলেছেন:

বেশ কয়েকটি এনভায়রনমেন্ট ভেরিয়েবল ক্রোন (8) ডিমন দ্বারা স্বয়ংক্রিয়ভাবে সেট আপ হয়। SHELL / bin / sh এ সেট করা আছে, এবং ক্রোনটবের মালিকের / etc / passwd লাইন থেকে LOGNAME এবং হোম সেট করা আছে।

সুতরাং, যদি আপনি অন্যথায় নির্দিষ্ট না করে থাকেন তবে রুটের ক্রন্টাব হোম / রুট ব্যবহার করবে। তবে / ইত্যাদি / ক্রনট্যাব (যেখানে এটিই /etc/cron.hourly রান-পার্টসের মাধ্যমে চালিত হয়), হোমকে / (এবং / বিন / শের পরিবর্তে / বিন / বাশলে SHELL) সেট করা হয়।

আমি এসভিএনসিএনসি সম্পর্কে জানি না, তবে সাবভার্সন একটি ˜ / .subversion / ডিরেক্টরি ব্যবহার করে, যাতে এটি হোমের উপর নির্ভর করতে পারে।


3

আমার RHEL 5.1 সিস্টেমে, PATH এনভায়রনমেন্ট ভেরিয়েবলটি / etc / crontab থেকে সেট করা আছে। উপরে থাকা সমস্ত স্টাফ হ'ল এমন পরিবেশ যা পরিবেশে খাওয়ানো হয়।

আপনি ক্রন পুনর্সূচনা, তাহলে প্রথমবার এটা রান করে (যদি থেকে /etc/crontabবা /var/spool/cron/$USER) এটিকে প্রথমেই / var / log /? ক্রন এটা একটি নোট করতে হবে। অন্যথায় এটি কেবল নোট করবে যে ক্রোন

আমার ক্রোনটাব নিম্নলিখিতটিতে সেট করা আছে:

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

আপনি যা করতে পারেন তা নীচের মতো কিছুকে /etc/cron.hourly এর মধ্যে রাখুন:

env > /tmp/cron.env

তারপরে ফাইলটি যখন আসে তখন এটি পরীক্ষা করুন, এবং হয় পরিবেশকে যথাযথভাবে সেট করতে আপনার স্ক্রিপ্টটি (যদি আপনি পারেন তবে) পরিবর্তন করুন, বা একটি ছোট র‌্যাপার স্ক্রিপ্ট লিখুন যা আপনার ক্রোনটব কল করবে।


2

/var/log/messages (বা আপনার ডিস্ট্রোর সমতুল্য) আপনাকে কখন এবং কোন ব্যবহারকারী হিসাবে কোন আদেশটি চালিত হয়েছিল তার বিশদটি জানিয়ে দিতে হবে।


2

কখনও মনে করবেন না যে পরিবেশে কিছু আছে। সর্বদা কোড ডিফেন্সিয়ালি। আপনার পছন্দসই পরিবেশ সেট আপ করার জন্য আপনার কাছে একটি সম্পূর্ণ ফাইল রয়েছে। এটা ব্যবহার করো.


2

অন্যান্য বহনযোগ্যতা নয়, সর্বশেষে আমি যাচাই করেছিলাম (দেবিয়ান ভাষায়) ক্রোন হুড়ালিতে (এবং অন্যদের) স্টাফ রাখার পরামর্শ দেওয়া হয়েছিল এবং যদি আপনি আপনার স্টাফ দিয়ে কোনও প্যাকেজ তৈরি করতে চান তবে সরাসরি ক্রন্টবায় না রাখুন।

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