মধ্যরাতে প্রতিদিন কোনও স্ক্রিপ্ট চালাবে এমন ক্রোন কীভাবে লিখবেন?


144

আমি শুনেছি ক্রন্টব একটি ভাল পছন্দ, তবে আমি কীভাবে লাইনটি লিখব এবং এটি সার্ভারে কোথায় রাখব?

উত্তর:


261

ক্রোনট্যাব কী এবং উবুন্টুতে এটি কীভাবে ব্যবহার করা যায় সে সম্পর্কে একটি ভাল টিউটোরিয়াল এখানে । আপনার ক্রোনটব লাইনটি এরকম কিছু দেখবে:

00 00 * * * ruby path/to/your/script.rb

( 00 00মধ্যরাত নির্দেশ করে - 0 মিনিট এবং 0 ঘন্টা - এবং *প্রতি মাসের প্রতিটি দিন মানে))

বাক্য গঠন: 
  মিমি এইচএইচ ডিডি এমটি ডাব্লুডি কমান্ড

  মিমি মিনিট 0-59
  ঘন্টা ঘন্টা 0-23
  মাসের ডিডি দিন 1-31
  মিট মাস 1-12
  সপ্তাহের সপ্তাহের 0-7 (রবিবার = 0 বা 7)
  কমান্ড: আপনি কি চালাতে চান
  সমস্ত সংখ্যার মানগুলি * দ্বারা প্রতিস্থাপিত হতে পারে যার অর্থ সমস্ত

1
আপনি কি 'ব্যবহারকারী হিসাবে রান করুন' কলামটি মিস করেন না?
লুকাস সিমন

4
@ লুকাশাসিমন /etc/crontab(উবুন্টুতে) ব্যবহারকারীর কলামটি (যা কমান্ডের আগে চলে যেত) অনুমতি দেওয়া হয়েছে , কিন্তু আপনি যখন চালনা করেন crontab -eআপনি কোনও ব্যবহারকারী-নির্দিষ্ট ক্রোনট্যাব সম্পাদনা করছেন যা এই কলামটির অনুমতি দেয় না। আইআইআরসি উবুন্টু /etc/crontabম্যানুয়ালি প্রস্থান করতে নিরুৎসাহিত করে কারণ এটি ওভাররাইট করা হতে পারে। এখানে দেখুন: স্ট্যাকওভারফ্লো.com
জর্দান

@Jordan তাই উত্তর রুট জন্য নিম্নলিখিতরূপে crontab পরিবর্তন হয়sudo crotab -u root -e
dashesy

40

ম্যান পৃষ্ঠা থেকে

linux$ man -S 5 crontab

   cron(8) examines cron entries once every minute.

   The time and date fields are:

          field          allowed values
          -----          --------------
          minute         0-59
          hour           0-23
          day of month   1-31
          month          1-12 (or names, see below)
          day of week    0-7 (0 or 7 is Sun, or use names)
   ...
   # run five minutes after midnight, every day
   5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
   ...

বিশেষ "ডাকনামগুলি" ব্যবহার করা যেতে পারে (ম্যান পৃষ্ঠায় ডকুমেন্টেড) নোট করা ভাল, বিশেষত "@ রিবুট" যার কোনও সময় এবং তারিখের বিকল্প নেই।

   # Run once after reboot.
   @reboot         /usr/local/sbin/run_only_once_after_reboot.sh

আপনি এই কৌশলটি প্রতি মিনিটে একাধিকবার আপনার ক্রোন জব চালাতে ব্যবহার করতে পারেন।

   # Run every minute at 0, 20, and 40 second intervals
   * * * * *       sleep 00; /usr/local/sbin/run_3times_per_minute.sh
   * * * * *       sleep 20; /usr/local/sbin/run_3times_per_minute.sh
   * * * * *       sleep 40; /usr/local/sbin/run_3times_per_minute.sh

ক্রোন জব যুক্ত করতে আপনি তিনটি জিনিসের একটি করতে পারেন:

  1. উপরের মতো দেখানো হয়েছে (এবং ক্রোনট্যাব, বিভাগ 5, ম্যান পৃষ্ঠা থেকে) ব্যবহারকারীর ক্রন্টবটিতে একটি কমান্ড যুক্ত করুন।

    • ব্যবহারকারীর ক্রন্টব্যাটকে মূল হিসাবে এটি সম্পাদনা করুন crontab -e -u <username>
    • বা বর্তমান ব্যবহারকারীর ক্রোনট্যাব স্রেফ সম্পাদনা করুন crontab -e
    • আপনি EDITORপরিবেশ পরিবর্তনশীল সহ সম্পাদককে সেট করতে পারেন
      • env EDITOR=nano crontab -e -u <username>
      • বা আপনার পুরো শেল সেশনের জন্য EDITOR এর মান সেট করুন
        1. export EDITOR=vim
        2. crontab -e
    • এর সাথে স্ক্রিপ্টগুলি কার্যকর করা যায় chmod a+x <file>


  1. ক্রোন জব হিসাবে একটি স্ক্রিপ্ট / প্রোগ্রাম তৈরি করুন এবং এটি সিস্টেমের অ্যানক্রোন /etc/cron.*lyডিরেক্টরিতে যুক্ত করুন

    • anacron /etc/cron.*ly ডিরেক্টরি:
      • /etc/cron.daily
      • /etc/cron.hourly
      • /etc/cron.monthly
      • /etc/cron.weekly
    • যেমন হিসাবে:
      • /etc/cron.daily/script_runs_daily.sh
      • chmod a+x /etc/cron.daily/script_runs_daily.sh - এটি কার্যকর করা
    • এছাড়াও অ্যানক্রোন ম্যান পৃষ্ঠা দেখুন: man anacron
    • এর সাথে স্ক্রিপ্টগুলি কার্যকর করা যায় chmod a+x <file>
    • এই ক্রোন কখন করবেন? * ল্রি স্ক্রিপ্টটি চলবে?
      • RHEL / CentOS 5.x এর জন্য এগুলি একটি নির্ধারিত সময়ে চালিত /etc/crontabবা কনফিগার করা আছে/etc/anacrontab
      • RHEL / CentOS 6.x + এবং ফেডোরা 17+ লিনাক্স সিস্টেম কেবল /etc/anacrontabএটিকে সংজ্ঞায়িত করে এবং ক্রোন.আর প্রতিটি সংজ্ঞায়িত করে/etc/cron.d/0hourly


  1. বা, কেউ এর মধ্যে সিস্টেম ক্রন্টেবল তৈরি করতে পারে /etc/cron.d

    • পূর্বে বর্ণিত ক্রন্টব্যাট সিনট্যাক্স (অতিরিক্ত হিসাবে প্রতিটি কাজের জন্য ব্যবহারকারীকে সরবরাহ করার পাশাপাশি) একটি ফাইলে রাখা হয় এবং ফাইলটি /etc/cron.d ডিরেক্টরিতে ফেলে দেওয়া হয়।
    • এটি সিস্টেম প্যাকেজিংয়ে পরিচালনা করা সহজ (যেমন RPM প্যাকেজ), তাই সাধারণত অ্যাপ্লিকেশন নির্দিষ্ট হতে পারে।
    • বাক্য গঠন পার্থক্য হ'ল সময় / তারিখের ক্ষেত্রগুলির পরে এবং কার্যকর করার জন্য কমান্ডের আগে কোনও ব্যবহারকারীকে ক্রোন কাজের জন্য নির্দিষ্ট করা আবশ্যক।
    • যুক্ত করা ফাইলগুলি /etc/cron.dএক্সিকিউটেবল হওয়ার দরকার নেই।
    • এখানে একটি উদাহরণস্বরূপ কাজ দেওয়া হয়েছে যা ব্যবহারকারী হিসাবে কার্যকর করা হয় someuserএবং /bin/bashশেল হিসাবে বাধ্যতামূলকভাবে ব্যবহার করা হয়।


   File: /etc/cron.d/myapp-cron
   # use /bin/bash to run commands, no matter what /etc/passwd says
   SHELL=/bin/bash
   # Execute a nightly (11:00pm) cron job to scrub application records
   00 23 * * * someuser /opt/myapp/bin/scrubrecords.php

5

কখনও কখনও আপনাকে আরভিএম সহ ক্রোনট্যাব ব্যবহার করে PATH এবং GEM_PATH উল্লেখ করতে হবে।

এটার মত:

# top of crontab file
PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global

# jobs
00 00 * * * ruby path/to/your/script.rb
00 */4 * * * ruby path/to/your/script2.rb
00 8,12,22 * * * ruby path/to/your/script3.rb

4

ক্রোন জব সেটআপ করার জন্য দ্রুত গাইড

একটি নতুন পাঠ্য ফাইল তৈরি করুন, উদাহরণস্বরূপ: mycronjobs.txt

প্রতিটি প্রাত্যহিক কাজের জন্য (00:00, 03:45), মাইক্রোনজবস.টেক্সটে সময়সূচী লাইনগুলি সংরক্ষণ করুন

00 00 * * * ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh

কাজ ক্রোনকে প্রেরণ করুন ( প্রতিবার আপনি এটি চালানোর সময়, ক্রোন যা সঞ্চিত রয়েছে তা মুছে ফেলে এবং মাইক্রোনজবস.টেক্সটে নতুন তথ্য সহ আপডেট করে )

crontab mycronjobs.txt

অতিরিক্ত দরকারী তথ্য

বর্তমান ক্রোন কাজ দেখুন

crontab -l

সমস্ত ক্রোন কাজ সরান

crontab -r

আপনার ক্রন্টব্যাট সিনট্যাক্সটি 03:45 এর জন্য ভুল। ক্রোনটাব ক্ষেত্রগুলি মিনিট পরে আওয়ার, অর্থাৎ "45 03" - আপনার পোস্টে এটি পিছনের দিকে রয়েছে।
রাসেল ই গ্লেউ

1

ক্রোন জব ব্যবহার করে বা শেল স্ক্রিপ্ট লিখে আপনি দুটি উপায়ে শেল স্ক্রিপ্ট সম্পাদন করতে পারেন

ধরে নেওয়া যাক আপনার স্ক্রিপ্টের নাম "thycript.sh"

প্রথমে স্ক্রিপ্টটির ব্যবহারকারীর অনুমতি পরীক্ষা করুন। স্ক্রিপ্টটির ব্যবহারকারীর অনুমতি পরীক্ষা করতে নীচের কমান্ডটি ব্যবহার করুন

llcript.sh

স্ক্রিপ্টটি যদি রুটে থাকে তবে নীচের কমান্ডটি ব্যবহার করুন

sudo crontab -e

দ্বিতীয়টি যদি স্ক্রিপ্টটি "উবুন্টু" ব্যবহারকারীকে ধারণ করে, তবে নীচের কমান্ডটি ব্যবহার করুন

crontab -e

আপনার ক্রন্টবায় নিম্নলিখিত লাইনটি যুক্ত করুন: -

55 23 * * /পাথ / টো / ইয়োরসক্রিপ.শ

এটি করার আরেকটি উপায় হ'ল একটি স্ক্রিপ্ট লেখা এবং এটি ব্যাকগ্রাউডে চালানো run

এখানে স্ক্রিপ্টটি এখানে আপনার স্ক্রিপ্টের নাম (যেমন: - youscript.sh) রাখতে হবে যা প্রতিদিন বেলা ২:5:৫৫ এ চলতে চলেছে

#!/bin/bash while true do /home/modassir/yourscript.sh sleep 1d done

এটি একটি ফাইলে সংরক্ষণ করুন (এর নাম দিন "প্রতি দিন দিন" দিন)

ঘুম 1 ডি - এর অর্থ এটি এক দিনের জন্য অপেক্ষা করে এবং তারপরে এটি আবার চলে।

এখন আপনার স্ক্রিপ্টকে অনুমতি দিন below নীচের কমান্ডটি ব্যবহার করুন: -

chmod + x Every-day.sh

এখন, "nohup" ব্যবহার করে পটভূমিতে এই শেল স্ক্রিপ্টটি কার্যকর করুন। আপনি আপনার সেশন থেকে লগআউট করার পরেও এটি স্ক্রিপ্টটি কার্যকর করতে থাকবে।

স্ক্রিপ্টটি কার্যকর করতে নীচের কমান্ডটি ব্যবহার করুন।

nohup ./Eeverdayday.sh &

দ্রষ্টব্য: - প্রতিদিন বেলা 23:55 এ "thycript.sh" চালানোর জন্য আপনাকে ঠিক 23:55 মিনিটে "Every -day.sh" স্ক্রিপ্টটি সম্পাদন করতে হবে।


0

এই বাক্যটিকে ক্রন্টব ফাইলটিতে রাখুন: 0 0 * * * / ইউএসআর / লোকাল / বিন / পাইথন / ওপট / বাইঅ্যাকউন্ট.পি> /var/log/cron.log 2> & 1

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