Crontab কাজ করে কিনা তা যাচাই করুন


82

নির্দিষ্ট ক্রন্টাব সঠিকভাবে কাজ করে কিনা তা আমি যাচাই করতে চাই। আমি এর মতো একটি চাকরি যুক্ত করেছি:

  */2 * * * * /path_to_my_php_script/info.php >/dev/null 2>&1

আমি জানি যে আমি নাল ডিভাইসে পুনঃনির্দেশ করেছি, তবে উপরের কমান্ডটি ভাল কিনা তা আমি নিশ্চিত নই।

* সম্পাদনা 1: আমার / var / লগ / সিসলগে প্রতি দুই মিনিটে আমার নিম্নলিখিত ত্রুটি রয়েছে:

 (CRON) error (grandchild #2788 failed with exit status 2)

* সম্পাদনা 2: এই নতুন কাজের সাথে লগগুলিতে কোনও ত্রুটি নেই:

 */2 * * * * /usr/bin/php /path_to_my_php_script/info.php >/dev/null 2>&1

দুর্ভাগ্যক্রমে উপরের সমস্ত চেষ্টা করা কিন্তু আমার পক্ষে কাজ করে না। আপনি যেমন বিচার / বিন / শ-সি-সি বলেছিলেন (PATH = / bin; /tmp/trial.sh </ dev / null) "নীচে বার্তা দেখায়, এটি / বিন / শ কী তা নিশ্চিত নয়: PATH = / বিন : সনাক্তকারী নয়

উত্তর:


73

ক্রন্টব প্রবেশের সিনট্যাক্সটি সঠিক দেখাচ্ছে। প্রকৃতপক্ষে, আপনি যদি " crontab -e" ব্যবহার করে আপনার ক্রোনট্যাব সম্পাদনা করেন (যেমনটি আপনার উচিত), আপনি যেভাবেই সিন্ট্যাক্টিক্যালি অবৈধ ক্রন্টব্যাব এন্ট্রি নির্দিষ্ট করে দিলে আপনি একটি ত্রুটি পাবেন।

  1. প্রথমত, /path_to_my_php_script/info.phpকমান্ড-লাইন থেকে সঠিকভাবে চালিত হয়?

  2. যদি তা হয় তবে এটিও কি ঠিক এভাবে চালিত হয় ?:

    /bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
    
  3. যদি এটি কাজ করে, এটি কি এভাবে কাজ করে?

    /bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
    

পদক্ষেপ (3) ক্রোন আপনার প্রোগ্রামটি কীভাবে চালাবে তার অনুরূপ ("ম্যান 5 ক্রোন" নথিভুক্ত হিসাবে)

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

PATH=~/bin:/usr/bin/:/bin

এছাড়াও লক্ষ করুন যে ক্রোন /bin/shবাশ নয়, ডিফল্টরূপে ব্যবহার করবে । আপনার যদি বাশের প্রয়োজন হয় তবে এটি আপনার ক্রন্টব ফাইলের শুরুতে যুক্ত করুন:

SHELL=/bin/bash

মনে রাখবেন যে এই দুটি পরিবর্তনই সমস্ত ক্রন্টব এন্ট্রিগুলিকে প্রভাবিত করবে । আপনি যদি কেবলমাত্র আপনার info.phpপ্রোগ্রামের জন্য এই মানগুলি সংশোধন করতে চান তবে আপনি এরকম কিছু করতে পারেন:

*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"

এটিও উল্লেখ করার মতো যে "মেল" (অন্য কথায় এমন একটি সিস্টেম যা একটি এমটিএ কনফিগার করা [সেন্ডমেল / পোস্টফিক্স / ইত্যাদি] আছে) তে ক্রন্টব্যাব প্রোগ্রামগুলি থেকে সমস্ত আউটপুট স্বয়ংক্রিয়ভাবে ইমেলের মাধ্যমে আপনাকে প্রেরণ করা হয়। একটি ডিফল্ট উবুন্টু ডেস্কটপ সিস্টেমে স্থানীয় মেল কনফিগার করা থাকবে না, তবে আপনি যদি কোনও সার্ভারে কাজ করছেন তবে এই সমস্ত ক্রোন মেল দেখতে আপনি কেবল একটি টার্মিনালে "মেল" টাইপ করতে পারেন। এটি atকমান্ডের ক্ষেত্রেও প্রযোজ্য ।


2
আমি দ্বিতীয় পদক্ষেপের জন্য অনুমতি অস্বীকার পেয়েছি। আমার কি করা উচিৎ?
আকিকারা

@akikara chmod + X ./cron.sh - স্পষ্টত যাই হোক না কেন ./cron.sh প্রতিস্থাপন আপনার ফাইলের অবস্থান যে আপনার চালানোর চেষ্টা করছেন হয়
Tisch

46

যদিও খুব বিরল, কখনও কখনও ক্রোন পরিষেবা চালু থাকলেও সঠিকভাবে কাজ বন্ধ করে দেয়। ক্রন্ডটি চলছে এবং কীভাবে পরিষেবাটি বন্ধ / চালু করা যায় তা যাচাই করবেন।

লিনাক্সে:

service crond status
service crond stop
service crond start

উবুন্টু এবং অন্যান্য ডেবিয়ান-ভিত্তিক সিস্টেমে:

service cron status
service cron stop
service cron start

13
শুধু একটি নোট ... উবুন্টু জন্য এটি cronনাcrond
অমিত কোহলি

32

ক্রোন আউটপুটটির জন্য ত্রুটি আউটপুটকে / dev / নাল এবং গ্রেপ / ভার / লগ / সিস্লোগে পুনর্নির্দেশ করবেন না।

grep cron /var/log/syslog

সম্পাদনা করার পরে কোনও ফাইল সংরক্ষণ করার সময় /etc/crontabবা ততক্ষণে ফাইলগুলি সংরক্ষণ করার সময় আপনি তত্ক্ষণাত ত্রুটিগুলি প্রদর্শন করতে পারেন /etc/cron.d/:

tail -f /var/log/syslog | grep --line-buffered cron

যদি সম্পাদনাটি ঠিক থাকে তবে আপনি কেবল RELOADবিজ্ঞপ্তিটি দেখতে পাবেন , ত্রুটিগুলি যেমন ঘটে থাকে

Jul 9 09:39:01 vm cron[1129]: Error: bad day-of-month; while reading /etc/cron.d/new 

18

আপনি টার্মিনাল কমান্ড দিয়ে আপনার সক্রিয় ক্রোন দেখতে পাবেন:

crontab -l

ক্রম অনুসারে এখানে প্যারামিটারগুলি রয়েছে:

  1. মিনিট (0 - 59)

  2. ঘন্টা (0 - 23)

  3. মাসের দিন (1 - 31)

  4. মাস (1 - 12)

  5. সপ্তাহের দিন (0 - 6) (রবিবার = 0)

  6. হুকুম

সুতরাং, আপনি প্রতি ঘন্টার প্রতি মিনিটে আপনার স্ক্রিপ্ট কল করছেন। পরীক্ষার উদ্দেশ্যে আপনার আউটপুটটি প্রায়শই বিরতিতে পরীক্ষা করা উচিত:

* * * * * <command> #Runs every minute

এটি প্রতি মিনিটে কল করবে!


* / 2 * * * * আমি প্রতি দুই মিনিট এখন পরিবর্তিত হয়েছে
croppio.com

11

প্রতিটি লাইনের সময় অংশের জন্য, আপনি আপনার ক্রোন সময় সংজ্ঞাটি পরীক্ষা / যাচাই করতে এই ক্রোন পরীক্ষকটি ব্যবহার করতে পারেন ।


এটা ভাল পরামর্শ।
রহিল উজির

2
এছাড়াও দরকারী: crontab-generator.org
15o

2

আমি বিশ্বাস করি আপনি run-partsব্যান্ডের বাইরে ক্রোন জব চালাতেও ব্যবহার করতে পারেন । ক্রোন ক্রম পর্যায়ক্রমে ক্রোন কাজগুলি চালানোর জন্য নিজেকে ব্যবহার করে তাই উপযুক্ত যুক্তি সরবরাহ করে আপনি যে কোনও সময় চালাতে পারেন।

যদি আপনি কেবলমাত্র উল্লিখিত সমস্ত ক্রোন জবগুলির পরিবর্তে একটি ফাইল চালাতে চান তবে আপনাকে /etc/cron.dailyবৈধ রেইজেক্সের সাথে সাথে রেজেক্স যুক্তি সরবরাহ করতে হবে।run-parts --list --regex '^p.*d$' /etc

মনে রাখবেন যে ক্রোন জবগুলি সাধারণত কোনও এক্সটেনশন ছাড়াই নামকরণ করা হয় এবং এক্সিকিউটেবল হিসাবে চিহ্নিত করা হয়, সুতরাং আপনার স্ক্রিপ্টগুলি একইরকম তা নিশ্চিত করুন, যদিও একটি রেজেক্স ব্যবহার করা আপনাকে কোনও এক্সটেনশন সহ কোনও স্ক্রিপ্ট ট্রিগার করতে দেয়।


1

আহ !!

উত্তরটি নিজেই পেয়েছি, আমি crondডিফল্ট ইনস্টলেশন ডিরেক্টরিটির মধ্যে যাচাই করেছিলাম এবং খুঁজে পেলাম না/etc/init.d/

এখন চেষ্টা করুন এবং উত্তর দিন।

দ্রষ্টব্য - আমি চেক হয়নি cron.allow, cron.denyখুব। এখন পর্যন্ত সব ঠিক আছে।

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