ক্রোন কি?
ক্রোন হল একটি কাজের সময়সূচী ব্যবস্থা যা Linux এবং MacOS অপারেটিং সিস্টেমে উপলব্ধ৷
৷এটি যে কোনো প্রোগ্রাম চালাতে ব্যবহার করা যেতে পারে যে কোনো সময়ে।
এর মধ্যে রয়েছে রুবি কোড!
যদি একটি নির্দিষ্ট পুনরাবৃত্ত কাজ থাকে যে আপনি প্রতিদিন, প্রতি সপ্তাহে বা এমনকি প্রতি ঘন্টায় স্বয়ংক্রিয়ভাবে চলতে চান, তাহলে ক্রোন হতে পারে আপনি যা খুঁজছেন।
কাজের উদাহরণ অন্তর্ভুক্ত :
- একটি সাপ্তাহিক ডাটাবেস ব্যাকআপ চালানো
- ওয়েবসাইট কার্যকলাপের একটি দৈনিক প্রতিবেদন তৈরি করা
- অনুস্মারক ইমেল পাঠানো হচ্ছে
আসুন আবিষ্কার করি কিভাবে আপনি ক্রোন আপনার জন্য কাজ করতে পারেন!
ক্রোনের মূল বিষয়গুলি
প্রতিটি ব্যবহারকারীর একটি ক্রোন ফাইল থাকতে পারে যেখানে আপনি যে কাজগুলি চালাতে চান তা সংজ্ঞায়িত করেন৷
৷
আপনি crontab -e
দিয়ে এই ফাইলটি সম্পাদনা করতে পারেন আদেশ৷
অথবা crontab -l
দিয়ে নির্ধারিত কাজগুলি তালিকাভুক্ত করুন .
ক্রন কাজের উদাহরণ :
0 0 * * * /opt/rubies/ruby-2.5.1/bin/rake db:backup
সিনট্যাক্স কিছুটা জটিল হতে পারে এবং আপনি হয়তো এই ফাইলগুলিকে সব সময় হাত দিয়ে সম্পাদনা করতে চান না৷
আমাদের জন্য জিনিসগুলি সহজ করার জন্য কোন রত্ন আছে?
হ্যাঁ!
যখনই মণি ব্যবহার করবেন
কারণ ক্রন সিনট্যাক্স মনে রাখা কঠিন হতে পারে আমরা whenever
এর মত একটি রত্ন ব্যবহার করতে পারি .
এই রত্নটি আপনাকে রুবিতে ক্রোন কাজগুলি সংজ্ঞায়িত করতে সাহায্য করে৷ .
প্রথমে রত্নটি ইনস্টল করুন।
তারপর, কনফিগারেশন ফাইল তৈরি করুন :
wheneverize . # [add] config/schedule.rb
এটি খুলুন৷
৷আপনি কিছু মন্তব্য-আউট উদাহরণ দেখতে পাবেন, যদি আপনি চান সেগুলি মুছে দিন।
ধরা যাক আমরা একটি ব্যাকআপ কাজ চাই যা প্রতি ঘন্টায় চলে৷
৷এটি “config/schedule.rb” ফাইলের ভিতরে লিখুন :
every 1.hour do rake "db:backup" end
বিকল্প অন্তর্ভুক্ত :
- রেক (আপনার বর্তমান প্রকল্পে সংজ্ঞায়িত একটি রেক টাস্ক শুরু করুন, মনে রাখবেন যে
db:backup
ডিফল্টরূপে সংজ্ঞায়িত করা হয় না, তবে আপনিdb:version
চেষ্টা করতে পারেন ) - রানার (রুবি ক্লাস + পদ্ধতি, যেমন
Archive.backup_now
) - কমান্ড (সিস্টেম কমান্ড)
এখন :
whenever --update-crontab
চালান ক্রোন এন্ট্রি তৈরি করতে কমান্ড।
আপনি crontab -l
দিয়ে আপনার নতুন এন্ট্রি দেখতে সক্ষম হবেন .
আমি এটাই পেয়েছি :
0 * * * * /bin/bash -l -c 'cd /home/jesus/testing && RAILS_ENV=production bundle exec rake db:backup --silent'
লক্ষ্য করুন যে টাস্কটি production
এ চলবে মোড।
এটি পরিবর্তন করতে চান?
আপনি এই সেটিং ব্যবহার করতে পারেন :
set :environment, "development"
এটি আপনার schedule.rb
-এ যায় ফাইল, উপরে।
আপনি এই কমান্ডটিও ব্যবহার করতে পারেন৷ :
whenever --update-crontab --set environment=development
যখন আপনি এই কমান্ডটি চালান তখন এটি পরিবেশ হিসাবে "উন্নয়ন" সহ সমস্ত কাজ তৈরি করে।
আরো যখনই উদাহরণ
এই উদাহরণটি দেখায় যে আপনি কীভাবে আরও নির্দিষ্ট হতে পারেন৷
৷সাপ্তাহিক কাজ :
every :monday, at: "6:00 PM" do runner "Mail.send_weekly_newsletter" end
এই উদাহরণটি দেখায় কিভাবে একই কাজ দিনে একাধিকবার চালাতে হয়।
দিনে দুবার টাস্ক চালান :
every :day, at: ["12:00 AM", "12:00 PM"] do command "rm tmp/testing.txt" end
যখনই রত্ন লগিং এবং সমস্যা সমাধান
একবার আপনার ক্রন্টাব ফাইলে কাজ হয়ে গেলে (crontab -l
দিয়ে চেক করুন ) আপনি যেতে প্রস্তুত।
পরবর্তী:
আপনি কিভাবে জানবেন যে নির্ধারিত কাজগুলি সঠিকভাবে কাজ করছে কিনা?
আপনি লগিং সেট আপ করতে পারেন এবং আউটপুট পড়তে পারেন।
আপনার schedule.rb
এর শীর্ষে এটি যোগ করে লগিং সক্ষম করুন৷ ফাইল।
কনফিগারেশন :
set :output, "log/cron.log"
whenever --update-crontab
চালাতে ভুলবেন না আপনি যখনই পরিবর্তন করবেন তখনই আদেশ করুন!
লগ ফাইল এখনও খালি?
কিছু ঘটতে দেখার জন্য আপনাকে নির্ধারিত সময়ের অপেক্ষা করতে হবে।
Btw, যদি আপনি লগগুলিতে এই ত্রুটিটি দেখতে পান৷ :
/bin/bash: bundle: command not found
এর মানে ক্রন রুবির একই সংস্করণ চালাচ্ছে না যা আপনি করছেন।
যদি আপনি রুবি সংস্করণ ম্যানেজার ব্যবহার করেন :
এটি .bash_profile
থেকে লোড করা নিশ্চিত করুন ফাইল, .bashrc
এর পরিবর্তে , যাতে আপনার ক্রোন কাজগুলি এটি ব্যবহার করতে পারে৷
যখনই এর বিকল্প
যখনই একটি ভাল রক্ষণাবেক্ষণ রত্ন হয় এবং এটি দুর্দান্ত কাজ করে৷
কিন্তু বিকল্প কি?
এখানে একটি তালিকা আছে :
- Heroku শিডিউলার, এটি Heroku ব্যবহারকারীদের জন্য একটি বিনামূল্যের কাজের সময় নির্ধারণের অ্যাড-অন। ক্রনের মতো নমনীয় নয় তবে এটি জিনিসগুলি সম্পন্ন করে
- রুফাস শিডিউলার, একটি রুবি রত্ন যা একটি ইন-মেমরি শিডিউলারের সাথে ক্রোনকে প্রতিস্থাপন করে
- Sidecloq এবং Sidekiq-cron, উভয়ই Sidekiq অ্যাড-অন যা Sidekiq-এ পুনরাবৃত্তিমূলক কাজ যোগ করে
মনে রাখবেন যে উভয় Sidekiq অ্যাডঅন সময়সূচীর জন্য প্রকৃত ক্রন সিনট্যাক্স চায়, তাই এটি যখনই সিনট্যাক্সের মতো সুন্দর হবে না।
ভাল জিনিস হল যে তারা Sidekiq ওয়েব UI এর সাথে একীভূত হয়৷
৷সারাংশ
আপনি রুবিতে যখনই রত্ন ব্যবহার করে ক্রন কাজের সময়সূচী করতে শিখেছেন!
অনুগ্রহ করে এই নিবন্ধটি শেয়ার করুন যাতে আরো মানুষ এটি থেকে উপকৃত হতে পারে৷
৷পড়ার জন্য ধন্যবাদ।