আমার ক্রোন.ডি কেন প্রতি মিনিটে কাজ চালায় না?


33

আমি প্রতি মিনিটে মৃত্যুর একটি অজগর স্ক্রিপ্ট পাওয়ার চেষ্টা করে একটি গোছা ছুঁড়ে ফেলেছি। সুতরাং আমি ভেবেছিলাম যে আমি প্রতি মিনিটে একবার "সম্ভবত কাজ করতে পারে এমন সহজতম কাজ" করার জন্য এটি সহজ করব (আমি ডেবিয়ান / টেস্টিং চালাচ্ছি)।

আমি এখানে একটি একক লাইন ফাইল তৈরি করেছি /etc/cron.d/perminute:

* * * * * /bin/touch /home/me/ding_dong

এটি মূলের মালিকানাধীন, এবং এক্সিকিউটেবল (এই বিষয়গুলির কোনও একটি কিনা তা নিশ্চিত নয়)। এবং তখন আমি করেছি:

sudo service cron reload

এবং তারপরে বসে ls -ltrআবার আমার হোম ডিরেক্টরিতে ( /home/me) ডিরেক্টরি চালাও । তবে আমার ডিং_ডং ফাইলটি কখনই প্রদর্শিত হয় না। আমি জানি যদি আমি এটি করি তবে sudo /bin/touch /home/me/ding_dongতা অবিলম্বে প্রদর্শিত হবে।

স্পষ্টতই এখানে কিছু বোকা অনুপস্থিত।


3
ক্রোন.ডে পরিবর্তন প্রয়োগ করার জন্য ক্রোন ডেমন পরিষেবাটি পুনরায় লোড করা সাধারণত অপ্রয়োজনীয় কারণ এটি প্রতি মিনিটে নতুন এবং আপডেট হওয়া ফাইলগুলির জন্য ডিরেক্টরিটি পুনরুদ্ধার করে।
জোসিপ রডিন

উত্তর:


45

যখন একটি ক্রন কনফিগারেশন যোগ /etc/cron.d/অথবা /etc/crontabআপনার উদাহরণে ব্যবহারকারীর নাম যা প্রেক্ষাপটে কমান্ড চালানো উচিত, যোগ আছে

* * * * * root /bin/touch /home/me/ding_dong

এবং আমার কাছ থেকে কেবল একটি ইঙ্গিত: আপনাকে ls -ltrবারবার দৌড়াতে হবে না , কেবল ব্যবহার করুন watch -n 5 "ls -ltr"এবং এটি প্রতি 5 সেকেন্ডে কমান্ডটি চালাবে (বা যা চান তার সাথে 5 প্রতিস্থাপন করে অন্য কোনও মান)।


9
এটি আমাকে সঠিক দিকে যেতে বাধ্য করেছে। এটি একটি প্রধানতম মুহূর্ত ছিল। আমি এটি স্থির করেছি, এবং এখনও এটি কার্যকর হয়নি। পড়ার পর man cronএকটু ধীর, এবং বিশেষ মনোযোগ পরিশোধ DEBIAN specificঅংশ, আমি লক্ষ্য করেছি যে ফাইল নয় নয় গোষ্ঠী বা অন্যান্য লিখনযোগ্য হও। যা আমি একপর্যায়ে আমার হতাশাকে সক্ষম করেছিলাম।
ট্র্যাভিস গ্রিগস

আপনি কি কেবল স্ক্রিপ্টের মালিককে রুটে পরিবর্তন করতে পারবেন না?
জেরেমিয়া

এই নির্দিষ্ট লাইনটি আমাকে সাহায্য করেছিল। থেকে man cron: অতিরিক্ত, দেবিয়ানতে ক্রোন /etc/cron.d ডিরেক্টরিতে ফাইলগুলি পড়ে। ক্রোন ফাইলগুলিকে /etc/cron.d তে / etc / crontab ফাইলের মতো আচরণ করে (তারা সেই ফাইলটির বিশেষ ফর্ম্যাট অনুসরণ করে, অর্থাৎ তারা ব্যবহারকারীর ক্ষেত্রকে অন্তর্ভুক্ত করে )। যাইহোক, তারা / etc / crontab এর থেকে স্বতন্ত্র: তারা উদাহরণস্বরূপ এ থেকে পরিবেশ পরিবর্তনশীল সেটিংস উত্তরাধিকার সূত্রে পায় না। এই পরিবর্তনটি দেবিয়ান সুনির্দিষ্ট করে নীচে দেবিয়ান স্পেসিফিকের নীচে নোটটি দেখুন।
হার্পারভিল

ম্যান ৮ ক্রোন (দেবিয়ানে) আরও বলেছে যে /etc/cron.d/ এ থাকা ফাইলগুলিতে কেবলমাত্র বর্ণমালা, '-' এবং '_' থাকতে পারে। বিশেষত, কোনও বিন্দু নেই।
এমপার্টেল

3

একটি নতুন cronকাজ তৈরি করতে , আপনি crontab -eযে কাজটি চালাতে চান সেই ব্যবহারকারী হিসাবে চালানো উচিত । তার পরে প্রদর্শিত উইন্ডোতে প্রাসঙ্গিক লাইন যুক্ত করুন:

* * * * * /bin/touch /home/me/ding_dong

আপনি যেভাবে এটি করছেন তার জন্য আলাদা ফর্ম্যাট দরকার এবং যাইহোক সত্যিই এটি ভাল ধারণা নয়। ক্রন্টাবগুলিতে /etc/cron.dকিছুটা আলাদা ফর্ম্যাট রয়েছে, তাদের ব্যবহারকারীর নামটি চালানো দরকার। উদাহরণ স্বরূপ:

* * * * * USERNAME /bin/touch /home/me/ding_dong

একটি ভাল কৌশল (@ ভোগনপোয়েটলরেট দ্বারা প্রস্তাবিত) হ'ল আপনার ক্রোন কাজের স্ট্যান্ডার্ড ত্রুটি ক্যাপচার করা যা সেগুলি ডিবাগ করতে সহায়তা করতে পারে। উদাহরণ স্বরূপ:

* * * * * /bin/touch /home/me/ding_dong 2>/tmp/error

6
ক্রোন.ড হ'ল "একটি ভাল ধারণা নয়" বলার কোনও কারণ নেই। ক্রোন ডিমন cron.d stderr আউটপুটটি কেবলমাত্র ব্যবহারকারীর নামটিতে মেইল ​​করবে এবং আপনি যদি এটি অন্য কোনও ইমেল ঠিকানায় পুনর্নির্দেশ করতে চান তবে মেল্টো ভেরিয়েবলটি উপলব্ধ।
জোসিপ রডিন

@ জোসিপরোডিন যে জিনিসগুলি রুট দ্বারা চালিত হয় না এবং যেগুলি আপনার দ্বারা সেট আপ করা হয়েছে এটির পক্ষে ভাল ধারণা নয়। এটি কোনও মাল্টিউজার সিস্টেমে সিসাদমিনের জন্য অর্থবোধ করে তবে আপনার নিজের মেশিনে, আপনার নিজস্ব ক্রোনটবে সবকিছু থাকা সহজতর তাই crontab -lআপনার সমস্ত ক্রোন জব পরীক্ষা করার জন্য এবং তালিকার একমাত্র জায়গা রয়েছে place
টেরডন

এটি ধরে নিয়েছে যে এটি সত্যিই কেবল একটি ব্যক্তিগত ক্রোন কাজ, যা ওপি সত্যই স্পষ্ট করে দেয় না - সাধারণত, অবাঞ্ছিত ব্যবহারকারী ক্রোন কাজের জন্য ক্রোন.ডি এর মাধ্যমে অনেকগুলি অ্যাপ্লিকেশন সেট আপ করা হয়েছে যেমন আপনার সুন্দরভাবে থাকার পরেও এগুলি সমস্ত এক জায়গায় রেখে দেওয়া নি: সঙ্গ সেবা ব্যবহারকারীদের, স্বয়ংক্রিয় স্থাপনার ইত্যাদি সহজ,
Josip রবিন্স

@ জোসিপরোডিন আমি একটি ব্যক্তিগত সিস্টেম ধরে নিয়েছি কারণ i) এন্টারপ্রাইজ সিস্টেমগুলি এখানে বিষয় ছাড়াই এবং ii) প্রশ্নটি কোনও অ-বিশেষজ্ঞ ব্যবহারকারীকে পরামর্শ দিয়েছে।
টেরডন

ঠিক আছে, আমি অনুমান করি যে সুপারভাইজার এবং সার্ভারফল্ট এবং ইউনিক্স এসই সাইটগুলির মধ্যে সাধারণ বিভ্রান্তির কারণে আমি আর এটি পড়তে পারি না :)
জোসিপ রডিন

2

এখানে একটি সম্ভাব্য ভুল কিভাবে একটি একক লাইন ফাইল তৈরি করা হয়। উবুন্টু ডকুমেন্টেশন থেকে :

... লাইন পাঁচটি সময়-এবং-তারিখ ক্ষেত্র, একটি কমান্ড দ্বারা অনুসরণ, একটি দ্বারা অনুসরণ হয়েছে newline অক্ষর

উদাহরণস্বরূপ, সৃষ্টির এই পদ্ধতিটি কার্যকর হয় না:

printf "* * * * * /bin/touch /home/me/ding_dong" > /etc/cron.d/ding_dong
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.