Cron হল Unix-ভিত্তিক সিস্টেমগুলির জন্য একটি টাস্ক শিডিউলার যার মধ্যে সকল লিনাক্স ডিস্ট্রো অন্তর্ভুক্ত। Cron ডেমন আপনার হোস্টে ব্যাকগ্রাউন্ডে চলে এবং শিডিউল অনুযায়ী শিডিউলড টাস্কগুলো রান করে। এই লেখায়, আমরা দেখাব কিভাবে CentOS বা RHEL লিনাক্স চলমান একটি সার্ভারে cron ইনস্টল করতে হয়, ক্রন সিনট্যাক্স শিখব, এবং crontab দিয়ে ক্রন জব শিডিউল করব।
CentOS বা RHEL লিনাক্সে Cron ইনস্টলেশন কীভাবে করবেন?
ডিফল্টভাবে, RHEL বা CentOS ইনস্টলেশনের পর cron তৎক্ষণে উপলব্ধ থাকে। কোনো কারণে আপনার কাছে এটি না থাকলে, আপনি বেস রিপোজিটরি থেকে yum বা dnf কমান্ড ব্যবহার করে ইনস্টল করতে পারেন:
# dnf update -y — হোস্টের সব প্যাকেজ আপডেট করতে
# dnf install crontabs -y — cron ইনস্টল করতে

ইনস্টলেশনের পর crond ডেমন সক্ষম করুন এবং চালু করুন:
# systemctl enable crond.service
# systemctl start crond.service
Crontab দিয়ে ক্রন জব যোগ কীভাবে করবেন?
ক্রনে টাস্ক যোগ করতে নিচের কমান্ড ব্যবহার করতে পারেন:
# crontab -e
এই কমান্ড আপনার ইউজারের জন্য একটি টাস্ক ফাইল ডিফল্ট টেক্সট এডিটরে খুলবে (আমার কেসে এটি vim, কিন্তু আপনি এটি আপনার সুবিধার অনুযায়ী অন্য একটিতে পরিবর্তন করতে পারেন, উদাহরণস্বরূপ, nano)। টাস্ক কনফিগার করার এই মেথড সিনট্যাক্স এরর প্রতিরোধ করে। Crontab একটি এররযুক্ত কনফিগ ফাইল সেভ করার অনুমতি দেয় না।
আপনি mc-তে ম্যানুয়ালি ক্রন জব ফাইল এডিট করতে পারেন:
# mcedit /var/spool/cron/root – ফাইলের নাম ইউজারের উপর নির্ভর করে ভিন্ন হতে পারে।
ক্রনে একটি সিম্পল জব যোগ করতে যা একটি ব্যাশ স্ক্রিপ্ট রান করবে, এই কমান্ড লিখুন:
# crontab -e
তারপর টাস্ক শিডিউল এবং স্ক্রিপ্ট ফাইলের পাথ লিখুন:
* * * * * /root/test.sh
ফাইলটি সেভ করুন (vim-এ এডিট করার মতো: ফাইল সেভ করতে Ctrl+O চাপুন এবং এক্সিট করতে Ctrl+X চাপুন)।
আপনি যদি সঠিকভাবে করে থাকেন, আপনার টাস্ক ক্রনে যোগ হয়ে যাবে। ক্রন জবের তালিকা দেখতে নিচের কমান্ড চালান:
# cat /var/spool/cron/root
* * * * * /root/test.sh
অথবা এই কমান্ড:
# crontab -l
এই স্ক্রিপ্ট ক্রন 통해 প্রতি মিনিটে রান হবে।
ন্যূনতম সময় ১ মিনিট। Cron ডেমন প্রতি মিনিটে একবার টাস্কের তালিকা স্ক্যান করে। এটি নিচের ফাইল এবং ডিরেক্টরি চেক করে:
/etc/crontab /etc/cron.*/. /var/spool/cron/
প্রতিটি crontab শিডিউল এন্ট্রি ৫টি ফিল্ড নিয়ে গঠিত:
minutes hours day_of_a_month months week_day # 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) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed

প্রতিটি ফিল্ডের জন্য নিচের বৈধ মানগুলো ব্যবহার করতে পারেন:
| Field | Value Range |
| Minutes | 0-59 |
| Hours | 0-23 |
| Day of a month | 1-31 |
| Month | 1-12 or jan feb mar apr may jun jul aug sep oct nov dec |
| Week day | 0-6 (যেখানে 0 হল রবিবার) or sun mon tue wed thu fri sat |
* ক্যারেক্টার মানে সকল অনুমোদিত মান। এখানে একটি নমুনা টাস্ক:
30 00 * * 1 /root/test.sh
টাস্কের স্ক্রিপ্ট প্রতিটি সোমবার রাত ০০:৩০-এ রান হবে।
ক্রন ফাইল সিনট্যাক্স সহজ করার জন্য কিছু স্পেশাল ক্যারেক্টার ব্যবহার করা হয়:
- একটি কমা (,) শিডিউল ভ্যালু আলাদা করার জন্য ব্যবহার হয় একই টাস্ক ভিন্ন সময়ে রান করতে। উদাহরণস্বরূপ, আপনি যদি প্রতিটি ঘন্টার ১৫তম এবং ৩০তম মিনিটে একটি টাস্ক রান করতে চান, তবে শিডিউল নিচের মতো সেট করতে পারেন:
15 * * * * 30 * * * *
অথবা কমা দিয়ে সংক্ষিপ্ত সিনট্যাক্স ব্যবহার করুন:
15,30 * * * *
- একটি স্ল্যাশ (/) একটি টাস্ক রিপিট করতে ব্যবহার হয়। উদাহরণস্বরূপ, আপনি প্রতি ২ ঘন্টায় একবার একটি টাস্ক রান করতে চান। / ব্যবহার করে আপনি ক্রন ফাইলের কন্টেন্ট অনেক সংক্ষিপ্ত করতে পারেন, অন্যথায় এটি খুব লম্বা হতো:
* */2 * * *
- একটি হাইফন (-) একটি ফিল্ডে ভ্যালুর রেঞ্জ নির্দেশ করে। আপনি যদি একটি ঘন্টার প্রথম বা শেষ ১০ মিনিটে একটি টাস্ক রান করতে চান, তবে হাইফন দিয়ে রেঞ্জ নির্দিষ্ট করুন:
0-10 * * * * 50-60 * * * *
ক্রন শিডিউলের আরও কিছু উদাহরণ:
- সপ্তাহের দিনগুলোতে দুপুর ১২টা এবং বিকেল ৬টাতে রান করতে:
0 12,18 * * 1-5 - প্রতি ৩০ মিনিটে:
*/30 * * * * - প্রতি শনিবার:
0 0 * * 6 - প্রতি মঙ্গল এবং বৃহস্পতিবার রাত ২টাতে:
0 2 * * 2,4
আপনি ক্রনে কিছু স্পেশাল ভেরিয়েবলও ব্যবহার করতে পারেন।
| Variable | Description | Syntax |
@reboot |
বুটে একবার রান করে | |
@yearly
অথবা
|
বছরে একবার | 0 0 1 1 * |
@monthly |
মাসে একবার | 0 0 1 * * |
@weekly |
সপ্তাহে একবার | 0 0 * * 0 |
@daily |
প্রতিদিন | 0 0 * * * |
@hourly |
প্রতি ঘন্টা | 0 * * * * |
@midnight |
মাঝরাতে |
এটি মানে, প্রতিদিন একটি টাস্ক রান করতে, আপনি নিচের ক্রন সিনট্যাক্স ব্যবহার করতে পারেন:
@daily echo "Cron check"
আপনি অন্য একজন ইউজারের crontab ফাইল এডিট করতে পারেন:
# crontab -u username
ক্রন নোটিফিকেশন ইমেইলে পাঠানোর উপায়
আপনি যদি আপনার crontab টাস্কগুলো চালু হওয়ার তথ্য ইমেইলে পেতে চান, তবে জবসহ ক্রন ফাইল কনফিগার করতে হবে।
ইমেইল পাঠাতে, আপনার সার্ভারে একটি মেইল এজেন্ট ইনস্টল করা থাকতে হবে। টেস্ট করার জন্য, আমি আমার লিনাক্স হোস্টে sendmail ইনস্টল করেছি:
# dnf install sendmail -y
# service sendmail start
ক্রন ফাইলে ইমেইল পাঠানোর প্যারামিটার কনফিগার করা যাক। ফাইলে নিচের লাইনগুলো যোগ করুন:
MAILTO="youremail@gmail.com" SHELL=/bin/bash HOME=/ * * * * * echo "Cron check"
SHELL — একটি ইউজার শেল
HOME — ক্রন ফাইলের পাথ

প্রতিবার একটি ক্রন জব শুরু হলে, একটি ইমেইল নোটিফিকেশন আপনার মেইलबক্সে পাঠানো হবে।
আপনি একটি ক্রন টাস্ক চালু হওয়ার তথ্য একটি লগ ফাইলে সেভ করতে পারেন। এর জন্য, ফাইলের শেষে >> যোগ করুন এবং আপনার লগ ফাইলের পাথ লিখুন:
* * * * * echo "Cron check" >> /var/log/admin/journal.log
আপনার crontab ফাইলে যদি অনেক জব থাকে, এবং আপনি उनमें से কিছুর ফলাফল ইমেইলে পেতে না চান, তবে সেগুলো সাইলেন্ট মোডে চালান:
* * * * * echo "Cron check" >> /dev/null 2>&1
ক্রন কনফিগারেশন ফাইল ও লগস
প্রধান ক্রন কনফিগারেশন ফাইল হল /etc/crontab। ক্রন ফাইলের পাশাপাশি, আপনি নিচের ডিরেক্টরি থেকে জব রান করতে পারেন:
- /etc/cron.daily – স্ক্রিপ্টগুলো দিনে একবার চালানোর জন্য
- /etc/cron.hourly – …. ঘন্টায় একবার
- /etc/cron.monthly – …. মাসে একবার
- /etc/cron.weekly – …. সপ্তাহে একবার
সশু একটি স্ক্রিপ্ট ফাইল ডিরেক্টরিগুলোর যেকোনো একটিতে রাখলেই এটি শিডিউল অনুযায়ী রান হবে।
আপনি /etc/cron.allow এবং /etc/cron.deny ব্যবহার করে শিডিউলারের অ্যাক্সেস সীমাবদ্ধ করতে পারেন। এই ফাইলগুলো তৈরি করে এবং সেখানে ইউজার যোগ করলেই চলে, যাদের ক্রন টাস্ক চালানোর অনুমতি আছে বা নেই।
আপনি /etc/crontab-এও জব যোগ করতে পারেন। সাধারণত, এই ফাইলটি রুট ইউজার বা সিস্টেম টাস্ক কনফিগার করার জন্য ব্যবহৃত হয়। ব্যক্তিগত ইউজার ফাইলগুলো /var/spool/cron/ বা /var/cron/tabs/-এ সংরক্ষিত থাকে।
ক্রন জব বা এরর ট্র্যাক করতে, আপনি লগ ফাইল দেখতে পারেন: /var/log/cron। এই ফাইলে সব টাস্ক এবং ডেমন অপারেশনের এরর (যদি থাকে) রেকর্ড হয়:
