প্রশ্ন কেন আমার crontab কাজ করছে না, এবং আমি কিভাবে এটি সমস্যা সমাধান করতে পারেন?


এটা একটা ক্যানোনিকাল প্রশ্ন cron এবং crontab ব্যবহার সম্পর্কে।

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

এর উত্তরকেন আমার crontab কাজ করছে না, এবং আমি কিভাবে এটি সমস্যা সমাধান করতে পারেন?'নিচে দেখা যাবে। এই ঠিকানা cron crontab সঙ্গে সিস্টেম হাইলাইট।


193
2017-11-17 04:51


উত্স


এটি একটি বিশাল dupe হয় কেন crontab কাজ করে না কারণ জিজ্ঞাসা করুন - Dan Dascalescu


উত্তর:


কিভাবে আপনার crontab সংক্রান্ত সব সমস্যা / সমস্যা (লিনাক্স)


এটা একটা কমিউনিটি উইকি, যদি আপনি এই উত্তরটির সাথে কোনও ভুলটি লক্ষ্য করেন বা অতিরিক্ত তথ্য পান তবে দয়া করে এটি সম্পাদনা করুন।


প্রথম, মৌলিক পরিভাষা:

পরবর্তী, ক্রন সম্পর্কে শিক্ষা:

একটি সিস্টেমের প্রতিটি ব্যবহারকারী তাদের নিজস্ব crontab ফাইল থাকতে পারে। রুট এবং ব্যবহারকারী crontab ফাইলের অবস্থান সিস্টেম নির্ভরশীল কিন্তু তারা সাধারণত নীচে /var/spool/cron

একটি সিস্টেম প্রশস্ত আছে /etc/crontab ফাইল, দী /etc/cron.d ডিরেক্টরি crontab টুকরা থাকতে পারে যা ক্রন দ্বারা পড়তে এবং ক্রিয়া করা হয়। কিছু লিনাক্স বিতরণ (যেমন, Red Hat) রয়েছে /etc/cron.{hourly,daily,weekly,monthly} যা ডিরেক্টরি, স্ক্রিপ্ট যা প্রতিটি ঘন্টা / দিন / সপ্তাহ / মাস রুট বিশেষাধিকার সঙ্গে মৃত্যুদন্ড কার্যকর করা হবে।

root সর্বদা crontab কমান্ড ব্যবহার করতে পারেন; নিয়মিত ব্যবহারকারীরা অ্যাক্সেস প্রদান করা বা হতে পারে না। যখন আপনি কমান্ডের সাথে crontab ফাইলটি সম্পাদনা করবেন crontab -e এবং এটি সংরক্ষণ করুন, ক্রোডটি মৌলিক বৈধতার জন্য এটি পরীক্ষা করে তবে আপনার crontab ফাইলটি সঠিকভাবে গঠিত হয় তা গ্যারান্টি দেয় না। একটি ফাইল বলা হয় cron.deny যা ব্যবহারকারীরা cron ব্যবহার করতে পারেন তা নির্দিষ্ট করবে। দ্য cron.deny ফাইল অবস্থানটি সিস্টেম নির্ভরশীল এবং মুছে ফেলা যেতে পারে যা ব্যবহারকারীদের ক্রন ব্যবহার করার অনুমতি দেবে।

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

crontab বিবরণ, একটি কমান্ড গঠন কিভাবে:

একটি crontab কমান্ড একটি একক লাইন দ্বারা প্রতিনিধিত্ব করা হয়। আপনি ব্যবহার করতে পারবেন না \ একাধিক লাইন উপর একটি কমান্ড প্রসারিত। হাশ (#) সাইন একটি মন্তব্য প্রতিনিধিত্ব করে যার অর্থ যে লাইনের কিছু ক্রন দ্বারা উপেক্ষা করা হয়। নেতৃস্থানীয় হোয়াইটস্পেস এবং ফাঁকা লাইন উপেক্ষা করা হয়।

শতাংশ ব্যবহার করে খুব সতর্ক থাকুন (%) আপনার কমান্ড সাইন ইন করুন। যতক্ষণ না তারা পালিয়ে যায় \% তারা প্রথম non-escaped পরে newlines এবং সবকিছু রূপান্তর করা হয় % stdin আপনার কমান্ড পাস করা হয়।

Crontab ফাইলের জন্য দুটি ফরম্যাট আছে:

  • ব্যবহারকারী crontabs

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
    # |  |  |  |  |
    # *  *  *  *  *   command to be executed
    
  • সিস্টেম প্রশস্ত /etc/crontab এবং /etc/cron.d টুকরা

    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7)
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    

পরবর্তীতে একটি ব্যবহারকারী নাম প্রয়োজন বিজ্ঞপ্তি। কমান্ড নামক ব্যবহারকারী হিসাবে চালানো হবে।

কমান্ড চালানোর সময় লাইনের প্রথম 5 টি ক্ষেত্র সময় (গুলি) উপস্থাপন করে। আপনি সময় স্পেসিফিকেশন নম্বর বা যেখানে ব্যবহারযোগ্য দিন / মাস নাম ব্যবহার করতে পারেন।

  • ক্ষেত্র স্পেস বা ট্যাব দ্বারা পৃথক করা হয়।
  • একটি কমা (,) একটি তালিকা নির্দিষ্ট করার জন্য ব্যবহৃত হয় যেমন 1,4,6,8 যার মানে 1,4,6,8 এ রান।
  • রেঞ্জ একটি ড্যাশ দিয়ে নির্দিষ্ট করা হয় (-) এবং তালিকা সহ মিলিত হতে পারে যেমন। 1-3,9-12 যার মানে 1 থেকে 3 এর মধ্যে 9 থেকে 1২ এর মধ্যে।
  • দ্য / অক্ষর একটি ধাপ পরিচয় করিয়ে দিতে ব্যবহার করা যেতে পারে যেমন 2/5 যার মানে 2 থেকে শুরু করে 5 তারপর (২7,12,17,২২ ...)। তারা শেষ শেষ মোড়ানো না।
  • একটি তারকাচিহ্ন (*) একটি ক্ষেত্রের ক্ষেত্রে সেই ক্ষেত্রের জন্য সমগ্র পরিসরকে চিহ্নিত করে (উদাঃ। 0-59 মিনিট ক্ষেত্রের জন্য)।
  • রেঞ্জ এবং পদক্ষেপ একত্রিত করা যেতে পারে যেমন */2 প্রাসঙ্গিক ক্ষেত্রের জন্য ন্যূনতম সময়ে শুরু করে প্রতি 2 উদ্বোধন করে। 0 মিনিটের জন্য (0,2 ... 58), 1 মাস (1,3 ... 11) ইত্যাদি।

ক্রন কমান্ড ডিবাগিং

মেইল চেক করুন! ডিফল্ট ক্রন ব্যবহারকারীর কমান্ড থেকে যেকোনো আউটপুট মেল করে এটি কমান্ডটি চালাচ্ছে। যদি কোন আউটপুট নেই কোন মেইল ​​হবে। যদি আপনি ক্রনকে একটি ভিন্ন অ্যাকাউন্টে মেইল ​​পাঠাতে চান তবে আপনি crontab ফাইলে মেল্টো এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।

MAILTO=user@somehost.tld
1 2 * * * /path/to/your/command

আউটপুট নিজেকে ক্যাপচার

1 2 * * *  /path/to/your/command &>/tmp/mycommand.log

যা stdout এবং stderr captures /tmp/mycommand.log এ

লগ তাকান; ক্রন syslog মাধ্যমে তার কর্ম লগ, যা (আপনার সেটআপ উপর নির্ভর করে) প্রায়শই যান /var/log/cron অথবা /var/log/syslog

প্রয়োজন হলে আপনি ক্রন স্টেটমেন্ট ফিল্টার করতে পারেন যেমন

grep CRON /var/log/syslog 

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

ক্রন চলমান চেক করুন

ক্রন চলমান না হলে আপনার কমান্ড নির্ধারিত হবে না ...

ps -ef | grep cron | grep -v grep

আপনি মত কিছু পেতে হবে

root    1224   1  0 Nov16 ?    00:00:03 cron

অথবা

root    2018   1  0 Nov14 ?    00:00:06 crond

যদি এটি পুনরায় আরম্ভ না

/sbin/service cron start

অথবা

/sbin/service crond start

অন্য পদ্ধতি হতে পারে; আপনার distro প্রদান করে কি ব্যবহার করুন।

cron একটি সীমিত পরিবেশে আপনার কমান্ড চালায়।

কি পরিবেশ ভেরিয়েবল পাওয়া যায় খুব সীমিত হতে পারে। সাধারণত, আপনি শুধুমাত্র কয়েকটি ভেরিয়েবল সংজ্ঞায়িত করবেন, যেমন $LOGNAME, $HOME, এবং $PATH

বিশেষ নোট হয় PATH সীমাবদ্ধ /bin:/usr/bin"আমার ক্রন স্ক্রিপ্ট কাজ করে না" এর বিশাল সংখ্যাগরিষ্ঠ সমস্যা এই বিধিনিষেধযুক্ত পথ দ্বারা সৃষ্ট হয়। যদি আপনার কমান্ডটি অন্য কোনও স্থানে থাকে তবে আপনি এটি কয়েকটি উপায়ে সমাধান করতে পারেন:

  1. আপনার কমান্ড পূর্ণ পাথ প্রদান করুন।

    1 2 * * * /path/to/your/command
    
  2. Crontab ফাইলের মধ্যে একটি উপযুক্ত PATH প্রদান করুন

    PATH=/usr:/usr/bin:/path/to/something/else
    1 2 * * * command 
    

যদি আপনার কমান্ডের জন্য অন্যান্য পরিবেশের ভেরিয়েবল প্রয়োজন হয় তবে আপনি ক্রোন্ট্যাব ফাইলেও তাদের সংজ্ঞায়িত করতে পারেন।

cron == $ HOME দিয়ে আপনার কমান্ড রান করে

যাইহোক, আপনি যে প্রোগ্রামটি ফাইলটি সিস্টেমে সঞ্চালিত করেন সেটি নির্বিশেষে, ক্রন চালানোর সময় প্রোগ্রামের বর্তমান কার্যকারী ডিরেক্টরিটি হবে ব্যবহারকারীর হোম ডিরেক্টরি। আপনি যদি আপনার প্রোগ্রামে ফাইলগুলি অ্যাক্সেস করেন, তবে আপনি যদি এটি সম্পর্কিত পদক্ষেপগুলি ব্যবহার করেন তবে এটি আপনাকে অবশ্যই বিবেচনায় নিতে হবে, অথবা (সর্বোপরি) সর্বত্র কেবল সম্পূর্ণরূপে যোগ্য পথগুলি ব্যবহার করুন এবং সবারই সম্পূর্ণ বিভ্রান্তি সংরক্ষণ করুন।

আমার crontab শেষ কমান্ড চালানো হয় না

ক্রন সাধারণত কমান্ড একটি নতুন লাইন দিয়ে বাতিল করা প্রয়োজন। আপনার crontab সম্পাদনা করুন; সর্বশেষ কমান্ড ধারণকারী লাইনের শেষে যান এবং একটি নতুন লাইন সন্নিবেশ করান (এন্টার টিপুন)।

Crontab বিন্যাস চেক করুন

আপনি / etc / crontab বা /etc/cron.d এর টুকরা এবং বিপরীত বিপরীতে একটি ক্রোন্ট্যাব ফরম্যাটেড ক্রোন্ট্যাব ব্যবহার করতে পারবেন না। একটি ব্যবহারকারী ফর্ম্যাটেড crontab একটি সারির 6 ষ্ঠ অবস্থানে একটি ব্যবহারকারী নাম অন্তর্ভুক্ত করা হয় না, যখন একটি সিস্টেম ফর্ম্যাটেড crontab ব্যবহারকারীর নাম অন্তর্ভুক্ত করে এবং ব্যবহারকারী হিসাবে কমান্ড চালায়।

আমি /etc/cron.{hourlydaily ,weekly,monthly} একটি ফাইল রাখি এবং এটি চালানো হয় না

  • ফাইলের নামের একটি এক্সটেনশান দেখুন না চেক করুন রান অংশের
  • ফাইল এক্সিকিউটিভ অনুমতি আছে নিশ্চিত করুন।
  • আপনার স্ক্রিপ্ট নির্বাহ করার সময় সিস্টেমটি কী ব্যবহার করতে বলুন (যেমন #!/bin/sh শীর্ষে)

ক্রন তারিখ সম্পর্কিত বাগ

আপনার তারিখ সম্প্রতি কোনো ব্যবহারকারী বা সিস্টেম আপডেট, টাইমজোন বা অন্য দ্বারা পরিবর্তিত হলে, ক্রোন্ট্যাব ভুলভাবে আচরণ শুরু করবে এবং বিজড়িত বাগগুলি প্রদর্শন করবে, কখনও কখনও কাজ করবে, কখনও কখনও নয়। এটি ক্রান্তাবের প্রচেষ্টাটি "আপনি যা চান তা" করার চেষ্টা করার সময় চেষ্টা করুন। ঘন্টা পরিবর্তিত হওয়ার পরে "মিনিট" ক্ষেত্রটি কার্যকর হবে না। এই পরিস্থিতিতে, শুধুমাত্র asterisks গ্রহণ করা হবে। ক্রনটি পুনরায় আরম্ভ করুন এবং ইন্টারনেটের সাথে সংযোগ না করে আবার চেষ্টা করুন (তাই তারিখটিতে সার্ভারগুলির একটিতে পুনরায় সেট করার সুযোগ নেই)।

শতাংশ লক্ষণ, আবার

শতাংশ লক্ষণ সম্পর্কে পরামর্শ জোরদার করার জন্য, ক্রন তাদের সাথে কী করে এখানে একটি উদাহরণ রয়েছে:

# cron entry
* * * * * cat >$HOME/cron.out%foo%bar%baz

~ 3 লাইন ধারণকারী ~ / cron.out ফাইল তৈরি করবে

foo
bar
baz

এটি ব্যবহার করার সময় বিশেষ করে অনুপ্রবেশ করা হয় date কমান্ড। শতাংশ লক্ষণ পালাতে ভুলবেন না

* * * * * /path/to/command --day "$(date "+\%Y\%m\%d")"

274
2017-10-09 15:29



এছাড়াও 'সীমাবদ্ধ env' বিভাগে উল্লেখ করতে চান যে LD_LIBRARY_PATH আপনার ক্রন টাস্ক ভাগ করে নেওয়া লাইব্রেরিগুলি খুঁজে পেতে অক্ষম হওয়ার কারণে ব্যর্থ হওয়া কোনও অতিরিক্ত ডিরেক্টরি সেট করার প্রয়োজন হতে পারে। - DavidJ
নোট করুন যে আপনি এমন কিছুও লিখতে পারেন: 35 1,5-23 / 2 * * * এর পরিবর্তে 35,1,5,7,9, * * * * এটি ছাড়াও crontab.guru আপনি মানুষের ভাষাতে তৈরি এন্ট্রি অনুবাদ। - Dennis Nolte
আউটপুট ক্যাপচার আমার জন্য কাজ করে না, শ শেল হতে পারে। আমি এই আরো পোর্টেবল মনে হয়: ... /path/to/your/command >/tmp/mycommand.log 2>&1 - chus
এটা আমার জন্য কাজ করেছে: sudo apt-get install postfix - jmunsch
ক্রন কাজ এছাড়াও ফাইল কত ভারী উপর নির্ভর করে? আমি ক্রোন সঙ্গে পাইথন মধ্যে সহজ হ্যালো বিশ্বের দৌড়ে, এটা কাজ। কিন্তু আমার দ্বিতীয় কোডটি একটু ভারী এবং সাধারণত চালানো হয় তবে ক্রনটি ফাইলটিতে কোনও আউটপুট দেয় না। - Devendra Bhat


আপনার cronjobs কাজ বন্ধ করা হলে, আপনার পাসওয়ার্ড মেয়াদ শেষ না চেক করুন।, একবার এটি আছে, সব ক্রন কাজ বন্ধ।
সেখানে বার্তা হবে /var/log/messages নীচের একটির মতো যা ব্যবহারকারীকে প্রমাণীকরণের সাথে সমস্যাগুলি দেখায়:

(username) FAILED to authorize user with PAM (Authentication token is no longer valid; new one required)


18
2018-02-04 20:29



শুধু এই পাশাপাশি পেয়েছিলাম (ত্রুটি বার্তা ফাইল / var / লগ / syslog আমার জন্য)। আমার ক্ষেত্রে একটি ডিজিটালঅসেস বক্স যা তৈরির সময়, তারা রুট পাসওয়ার্ডটি (বিকল্পভাবে) অন্য একটিতে রিসেট করে এবং আপাতদৃষ্টিতে যতক্ষণ না আপনি সেখানে যান এবং এটি পরিবর্তন করেন, সমস্ত ক্রন কাজগুলি চালানো হয় না। হতাশাজনক। ঠিক মত কিছু sudo -u root passwd - rogerdpack


ডেবিয়ান লিনাক্স এবং এর ডেরিভেটিভ (উবুন্টু, মিন্ট, ইত্যাদি) কিছু বিশেষত্ব রয়েছে যা আপনার ক্রন কাজগুলিকে নির্বাহ থেকে বাধা দিতে পারে; বিশেষ করে, ফাইল /etc/cron.d, /etc/cron.{hourly,daily,weekly,monthly} অবশ্যই :

  • রুট মালিকানাধীন হতে হবে
  • শুধুমাত্র রুট দ্বারা লেখার হতে হবে
  • দল বা অন্যান্য ব্যবহারকারীদের দ্বারা writable হতে হবে না
  • একটি নাম আছে কোন বিন্দু ছাড়া। ' অথবা অন্য কোন বিশেষ অক্ষর কিন্তু '-' এবং '_'।

শেষ এক নিয়মিত unsuspecting ব্যবহারকারীদের ব্যাথা; বিশেষ করে এই ফোল্ডারগুলির মধ্যে কোন একটি স্ক্রিপ্ট নামকরণ করা হয় whatever.sh, mycron.py, testfile.pl, ইত্যাদি হবে না নির্বাহ করা, কখনও।

আমার অভিজ্ঞতার মধ্যে, এই বিশেষ বিন্দু ডেবিয়ান এবং ডেরাইভেটিভগুলিতে অন-এক্সিকিউটিভ ক্রনজোজের পক্ষে সর্বাধিক ঘন ঘন কারণ।

দেখ man cron আরো বিস্তারিত জানার জন্য, প্রয়োজন হলে।


15
2017-11-17 14:37





অস্বাভাবিক এবং অনিয়মিত সময়সূচী

ক্রন সব কিছু একটি খুব মৌলিক সময় নির্ধারণকারী এবং সিনট্যাক্স সহজে প্রশাসক সামান্য আরো অস্বাভাবিক সময়সূচী প্রণয়ন করতে পারবেন না।

নিম্নলিখিত কাজ বিবেচনা করুন যা সাধারণত ব্যাখ্যা করা হবে "রান command প্রতি 5 মিনিট ":

*/5 * * * * /path/to/your/command

বনাম:

*/7 * * * * /path/to/your/command

যেটি না সর্বদা চালান command প্রতি 7 মিনিট

মনে রাখবেন যে / চরিত্রটি একটি ধাপ পরিচয় দিতে ব্যবহার করা যেতে পারে তবে যে পদক্ষেপগুলি একটি সিরিজের শেষে অতিক্রম করে না। */7 যা মিনিট থেকে প্রতি 7 ম মিনিট ম্যাচ 0-59  যেমন 0,7,14,21,28,35,42,49,56 কিন্তু এক ঘন্টা এবং পরবর্তী মধ্যে সেখানে হবে ব্যাচ মধ্যে শুধুমাত্র 4 মিনিট, পরে 00:56 একটি নতুন সিরিজ শুরু হয় 01:00, 01:07 ইত্যাদি (এবং ব্যাচ উপর চালানো হবে না 01:03 , 01:10 , 01:17 ইত্যাদি)।


পরিবর্তে কি করতে হবে?

একাধিক ব্যাচ তৈরি করুন

একক ক্রন কাজের পরিবর্তে, একাধিক ব্যাচ তৈরি করুন যা পছন্দসই সময়সূচীতে মিলিত হয়।

উদাহরণস্বরূপ, প্রতি 40 মিনিট (00:00, 00:40, 01:২0, 02:00 ইত্যাদি) একটি ব্যাচ চালানোর জন্য দুটি ব্যাচ তৈরি করুন, যেটি এমনকি ঘন ঘন দুবার চালায় এবং দ্বিতীয়টি যা কেবল অদ্ভুত ঘন্টা চালায়:

# The following lines create a batch that runs every 40 minutes i.e.

# runs on   0:00, 0:40,        02:00, 02:40         04:00 etc to 22:40
0,40 */2 * * * /path/to/your/command

# runs on               01:20,               03:20,       etc to 23:20
20 1/2 * * * /path/to/your/command

# Combined: 0:00, 0:40, 01:20, 02:00, 02:40, 03:20, 04:00 etc.

কম ঘন ঘন আপনার ব্যাচ চালান 

আপনার ব্যাচটি প্রতি 7 মিনিট চালানোর পরিবর্তে, যা একাধিক ব্যাচগুলিতে ভেঙ্গে যাওয়ার একটি কঠিন সময়সূচী, পরিবর্তে প্রতি 10 মিনিট এটি চালান।

আরো ঘন ঘন আপনার ব্যাচ চালান 

অনেক অদ্ভুত সময়সূচী বিকাশ হয় কারণ ব্যাচ রানটাইমগুলি বৃদ্ধি / উর্ধ্বমুখী হয় এবং তারপরে একই ব্যাচের অতিরিক্ত রানগুলি ওভারল্যাপিং এবং সময়োপযোগীভাবে চলমান রোধে ব্যাচগুলি অতিরিক্ত সুরক্ষা মার্জিনের সাথে নির্ধারিত হয়।

পরিবর্তে, ভিন্নভাবে চিন্তা করুন এবং একটি ক্রোজোজ তৈরি করুন যা আগের রানটি শেষ না হওয়া পর্যন্ত চিত্তাকর্ষকভাবে ব্যর্থ হবে, তবে যা অন্যথায় চলবে। এটা দেখ Q & A-:

* * * * * /usr/bin/flock -n /tmp/fcj.lockfile /usr/local/bin/frequent_cron_job --minutely

অনুরূপ নোটে, আপনি শেষ সফল রানটির টাইমস্ট্যাম্প রেকর্ড করতে এবং ব্যাচ চেকের শুরুতে ব্যাচগুলির মধ্যবর্তী পছন্দসই ব্যবধান ইতোমধ্যে পাস করা এবং কার্যকর করা এবং অন্যথায় নির্বোধভাবে প্রস্থান করতে পারেন।

ব্যাশ মধ্যে seven-minute-job কিছু ভালো কিছু দেখতে হবে:

#!/bin/bash
# seven-minute-job
# This batch will only run when 420 seconds (7 min) have passed
# since the file /tmp/lastrun was either created or updated

if [ ! -f /tmp/lastrun ] ; then
    touch /tmp/lastrun
fi

if [ $(( $(date +%s) - $(date -r /tmp/lastrun +%s) )) -lt 420 ] ; then
    echo "The minimum interval of 7 minutes between successive batches hasn't passed yet."
    exit
fi

echo "Start running your batch"

date > /tmp/lastrun

তারপর আপনি নিরাপদে (প্রচেষ্টা) প্রতি মিনিট চালানোর জন্য যা করতে পারেন:

* * * * * /path/to/your/seven-minute-job

ক্রন ব্যবহার করবেন না

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


10
2017-10-23 04:45





পিএইচপি-ভিত্তিক

যদি আপনার মত কিছু ক্রন কাজ থাকে:

php /bla/bla/something.php >> /var/logs/somelog-for-stdout.log

এবং ত্রুটি ক্ষেত্রে, তারা আপনাকে পাঠানো হবে, কিন্তু তারা না - এই চেক।

ডিফল্টরূপে পিএইচপি STDOUT ত্রুটি পাঠানো হয় না। @see https://bugs.php.net/bug.php?id=22839

এটি ঠিক করার জন্য, ক্লি এর php.ini বা আপনার লাইন (অথবা আপনার পিএইচপি এর ব্যাশ মোড়ানো) এ যুক্ত করুন:

  • --define display_startup_errors = 1
  • --define display_errors = 'stderr'

প্রথম সেটিংটি আপনাকে 'মেমরি ওপস' এবং ২ য় মতো ফ্যাটলগুলি পেতে দেবে - তাদের সকলকে STDERR এ পুনঃনির্দেশিত করতে। শুধুমাত্র আপনি ভাল ঘুমানোর পরে শুধুমাত্র সমস্ত লগ করার পরিবর্তে আপনার রুট এর মেইল ​​পাঠানো হবে।


8



পিএইচপি 5.2+ শাখায় যোগ করা প্যাচের স্ট্যাটাসের সাথে ২007 সালে সেই ত্রুটি প্রতিবেদনটি বন্ধ করে দেওয়া হয়েছিল। আপনি এই প্রয়োজন হয় কি নিশ্চিত? আমি শুধু পিএইচপি 5.4 চেষ্টা করেছি এবং এটা জরিমানা কাজ বলে মনে হচ্ছে। (এটি এখনও পিএইচপি 4 জন্য প্রয়োজন হয়)। - Xeoncross
@ এক্সনক্রস উত্তর দিন দেখুন :) - gaRex
হ্যাঁ, ২013 সালে উত্তর দেওয়ার পর থেকে আমাকে বিভ্রান্ত করেছে এবং টিকেটটি '07 এ ফিরে এসেছে। - Xeoncross