- crond ডেমন কীভাবে কাজ করে এবং crontab ফাইল ব্যবহার করে কীভাবে টাস্কগুলো পরিচালনা করা হয়।
- প্রোগ্রামের সুনির্দিষ্ট নির্বাহের জন্য বিশদ সিনট্যাক্স এবং বিশেষ অক্ষরের ব্যবহার।
- TAR ব্যবহার করে ব্যাকআপ স্ক্রিপ্ট বাস্তবায়ন এবং সিস্টেম রক্ষণাবেক্ষণের স্বয়ংক্রিয়করণ।
- প্রক্রিয়া ব্যবস্থাপনার জন্য সিস্টেমডি টাইমার এবং গ্রাফিক্যাল টুলের মতো আধুনিক বিকল্পসমূহ।
আপনি সম্প্রতি লিনাক্স ব্যবহার শুরু করে থাকুন বা বেশ কিছুদিন ধরে নিজের সার্ভার পরিচালনা করে থাকুন, আপনি সম্ভবত ইতিমধ্যেই উপলব্ধি করেছেন যে কিছু কাজ হাতে-কলমে করা বেশ কষ্টকর। টেম্পোরারি ফাইল পরিষ্কার করা থেকে শুরু করে ব্যাকআপের মাধ্যমে আপনার ডেটার নিরাপত্তা নিশ্চিত করা পর্যন্ত, এই প্রক্রিয়াগুলোকে স্বয়ংক্রিয় করাই হলো হতাশা এড়ানোর এবং একটি সাধারণ ভুলের কারণে এক মাসের পরিশ্রম নষ্ট হয়ে যাওয়া রোধ করার মূল চাবিকাঠি।
এই সমস্যা সমাধানের জন্য, ইউনিক্স-সদৃশ সিস্টেমগুলোতে ক্রন (Cron) নামে একটি কিংবদন্তী টুল রয়েছে। মূলত, এটি কমান্ডের জন্য একটি অ্যালার্ম ঘড়ির মতো , যা আপনার নির্দিষ্ট করা সঠিক সময়ে স্ক্রিপ্ট বা অ্যাপ্লিকেশন চালু করে এবং ব্যাকগ্রাউন্ডে কাজ করতে থাকে, আর সেই সময়ে আপনি কফি পান করেন বা কাজটি যে আছে, তা পুরোপুরি ভুলে যান।
ক্রন আসলে কী এবং এটি কীভাবে কাজ করে?
যখন আমরা Cron নিয়ে কথা বলি, তখন আমরা আসলে crond নামক একটি ডেমনকে বোঝাই । লিনাক্স জগতে, ডেমন হলো এমন একটি প্রসেস যা সিস্টেম বুট হওয়ার মুহূর্ত থেকে কোনো ইউজার ইন্টারফেস ছাড়াই ব্যাকগ্রাউন্ডে চলতে থাকে। এর কাজ একঘেয়ে কিন্তু অত্যাবশ্যক: প্রতি মিনিটে এটি কনফিগারেশন ফাইলগুলো পরীক্ষা করে দেখে যে বর্তমান সময় ও তারিখের সাথে মিলে যায় এমন কোনো নির্ধারিত ক্রন জব আছে কি না।
সবকিছু সুষ্ঠুভাবে চলার জন্য সিস্টেম ক্লক সঠিকভাবে সেট করা অত্যন্ত জরুরি। সময় বা টাইম জোন ভুল থাকলে, আপনার ব্যাকআপগুলো ভুল সময়ে চলবে। তাই, NTP সার্ভারের সাথে সিনক্রোনাইজেশন সঠিক আছে কিনা তা যাচাই করতে `timedatectl` কমান্ড ব্যবহার করার পরামর্শ দেওয়া হয় , যা নিশ্চিত করে যে সিস্টেমে সময়ের কোনো গরমিল নেই।
ক্রনট্যাব ফাইল: যেখানে আসল জাদুটা ঘটে
ক্রন যদি ইঞ্জিন হয়, তবে ক্রনট্যাব হলো তার নির্দেশিকা । এটি একটি টেক্সট ফাইল যেখানে আমরা লিখে রাখি যে আমরা কী এবং কখন চালাতে চাই। মজার ব্যাপার হলো, এটি শুধু একটি ফাইল নয়; সিস্টেমের /etc/crontab-এ একটি গ্লোবাল ক্রনট্যাব আছে, কিন্তু প্রত্যেক ব্যবহারকারীর নিজস্ব ক্রনট্যাব থাকতে পারে , যা বিভিন্ন ব্যক্তিকে সব সময় অ্যাডমিনিস্ট্রেটর প্রিভিলেজ ছাড়াই তাদের কাজগুলো শিডিউল করার সুযোগ দেয়।
এই কাজগুলো পরিচালনা করার জন্য, আমরা সম্পাদনা করতে `crontab -e` , সক্রিয় ফাইলগুলোর তালিকা দেখতে `crontab -l` , এবং সবকিছু মুছে ফেলে নতুন করে শুরু করতে `crontab -r` কমান্ড ব্যবহার করি । গুরুত্বপূর্ণ কার্নেল ফাইলগুলোতে হাত না দিয়ে সিস্টেম রক্ষণাবেক্ষণ গুছিয়ে রাখার এটি একটি অত্যন্ত পরিচ্ছন্ন উপায়।
ক্রন সিনট্যাক্সের বিশ্লেষণ
কোনো কাজ নির্ধারণ করতে হলে, আপনাকে অবশ্যই পাঁচটি সময়ের ফিল্ডের একটি কঠোর ক্রম অনুসরণ করতে হবে এবং এরপর কমান্ডটি দিতে হবে। ক্রমটি হলো: মিনিট, ঘন্টা, মাসের দিন, মাস এবং সপ্তাহের দিন । উদাহরণস্বরূপ, যদি আমরা 0 19 * * 0 প্রবেশ করাই, তাহলে আমরা সিস্টেমকে বলছি যেন এটি প্রতি রবিবার সন্ধ্যা ৭টায় সক্রিয় হয়।
আমাদের জীবনকে আরও সহজ করার জন্য রয়েছে বিশেষ অক্ষর যা আমাদের সম্পূর্ণ নিয়ন্ত্রণ দেয়। অ্যাস্টারিস্ক (*) এর অর্থ "সর্বদা" বা "যেকোনো মান", অন্যদিকে স্ল্যাশ (/) ব্যবধান নির্ধারণ করতে ব্যবহৃত হয়, যেমন */10 প্রতি দশ মিনিটে কিছু চালানোর জন্য। হাইফেন (-) পরিসীমা নির্ধারণ করে এবং কমা (,) আপনাকে নির্দিষ্ট মান তালিকাভুক্ত করার সুযোগ দেয়। এছাড়াও, আছে পূর্বনির্ধারিত শর্টকাট যেমন @daily, @weekly বা @reboot, যা সবচেয়ে সাধারণ ক্ষেত্রগুলোর জন্য লেখা সহজ করে তোলে।
আপনার প্রথম ব্যাকআপ সিস্টেম তৈরি করা
এর সবচেয়ে দরকারি অ্যাপ্লিকেশনগুলোর মধ্যে একটি হলো ডেটা ব্যাকআপ। এর জন্য, TAR টুলটি একটি আদর্শ নেটিভ অপশন । আমরা একটি ব্যাশ স্ক্রিপ্ট তৈরি করতে পারি যা আমাদের ফাইলগুলোকে প্যাকেজ করে, ফাইলের নামে বর্তমান তারিখ যুক্ত করে এবং সবচেয়ে গুরুত্বপূর্ণভাবে, ক্যাশ বা ট্র্যাশের মতো অপ্রয়োজনীয় ফোল্ডারগুলোকে বাদ দেয় , যাতে ব্যাকআপটি গিগাবাইট পরিমাণ আবর্জনায় পরিণত না হয়।
স্ক্রিপ্টটি তৈরি হয়ে গেলে (উদাহরণস্বরূপ, /usr/local/bin/mybackup-এ) এবং `chmod +x` কমান্ড দিয়ে এক্সিকিউশন পারমিশন দেওয়ার পর , শুধু রুট ক্রনট্যাবে একটি লাইন যোগ করুন। এভাবে, সার্ভারটি স্বয়ংক্রিয়ভাবে ব্যাকআপ নেবে, এবং হার্ড ড্রাইভ ভরে যাওয়া এড়াতে আপনি স্ক্রিপ্টটিকে দুই সপ্তাহের বেশি পুরোনো ব্যাকআপগুলো স্বয়ংক্রিয়ভাবে মুছে ফেলার জন্য শিডিউলও করতে পারেন ।
উন্নত প্রশাসন এবং পরম পথ
নতুনদের মধ্যে একটি খুব সাধারণ ভুল হলো তাদের স্ক্রিপ্টে রিলেটিভ পাথ ব্যবহার করা। ক্রন (Cron) একটি অত্যন্ত সীমিত পরিবেশে চলে এবং আপনার অবস্থান সম্পর্কে জানে না, তাই আপনার সর্বদা অ্যাবসোলিউট পাথ ব্যবহার করা উচিত (যেমন ./script.sh-এর পরিবর্তে /home/user/script.sh)। অন্যথায়, কমান্ডটি নীরবে ব্যর্থ হবে, এবং যখন আপনার ডেটা পুনরুদ্ধার করার প্রয়োজন হবে, তখন আপনি একটি অপ্রীতিকর পরিস্থিতির সম্মুখীন হবেন।
অজ্ঞতার সাথে কোনো পদক্ষেপ এড়ানোর জন্য এটি অত্যাবশ্যক। আউটপুট লগ-এ পুনঃনির্দেশ করুনঅপারেটর ব্যবহার করে >>> /var/log/backup.log 2>&1আমরা সাফল্য এবং ব্যর্থতা উভয়ই একটি ফাইলে সংরক্ষণ করতে পারি। এর ফলে, যদি কিছু ভুল হয়, তাহলে অনুমান না করে ঠিক কী ঘটেছে তা জানার জন্য আমাদের শুধু লগ ফাইলটি দেখলেই চলবে।
কর্মক্ষমতা এবং সর্বোত্তম অনুশীলনের উপর প্রভাব
প্রতি সেকেন্ডে চলমান কাজ দিয়ে সিস্টেমকে অতিরিক্ত ভারাক্রান্ত করা উচিত নয়, কারণ এর ফলে সিপিইউ এবং র্যামের ব্যবহার হঠাৎ করে অনেক বেড়ে যেতে পারে। সবচেয়ে বুদ্ধিমানের কাজ হলো , ব্যবহারকারীদের উপর প্রভাব এড়ানোর জন্য ডেটাবেস আপডেট বা বড় ব্যাকআপের মতো বেশি রিসোর্স ব্যবহারকারী প্রসেসগুলোকে খুব ভোরে বা ব্যস্ততাহীন সময়ে শিডিউল করা ।
যদি একটি কাজ প্রত্যাশার চেয়ে বেশি সময় নেয় এবং তার ফলে আরেকটি কাজ ওভারল্যাপ করে, তবে তা এড়ানোর জন্য ' flock' ব্যবহার করার পরামর্শ দেওয়া হয় , যা একই স্ক্রিপ্টের যুগপৎ নির্বাহ (concurrently execution) প্রতিরোধ করে। এছাড়াও, কারা 'Cron' ব্যবহার করতে পারবে তা সীমাবদ্ধ করতে, অ্যাডমিনিস্ট্রেটর ' cron.allow' এবং 'cron.deny' ফাইলগুলো কনফিগার করতে পারেন , যা নিশ্চিত করে যে শুধুমাত্র অনুমোদিত ব্যক্তিরাই সার্ভারে কাজ নির্ধারণ (task schedule) করতে পারবে।
আধুনিক বিকল্প: সিস্টেমডি টাইমার এবং আরও অনেক কিছু
যদিও Cron একটি ক্লাসিক, আধুনিক সিস্টেমগুলো systemd টাইমার ব্যবহার করে । এগুলো অনেক বেশি শক্তিশালী, কারণ এগুলোর সাহায্যে আপনি নির্ভরতা পরিচালনা করতে, ত্রুটি আরও কার্যকরভাবে সামলাতে এবং শুধু ঘড়ির ওপর ভিত্তি করে নয়, বরং সিস্টেম ইভেন্টের (যেমন স্টার্টআপ) ওপর ভিত্তি করেও কাজ সম্পাদন করতে পারেন। এগুলো /etc/systemd/system/ ফোল্ডারের .timer এবং .service ফাইল ব্যবহার করে কনফিগার করা হয়।
যারা টার্মিনাল ব্যবহারে স্বচ্ছন্দ নন, তাদের জন্য KCron (KDE-এর জন্য) এর মতো গ্রাফিক্যাল বিকল্প অথবা Webmin-এর মতো ওয়েব-ভিত্তিক টুল রয়েছে। macOS-এর মতো অন্যান্য অপারেটিং সিস্টেমে launchd ব্যবহৃত হয় , যা অ্যাপল ইকোসিস্টেমের সাথে আরও নিবিড় সংযোগ স্থাপন করে এবং ব্যর্থ হওয়া টাস্কগুলোকে স্বয়ংক্রিয়ভাবে পুনরায় চালু করার সুযোগ দেয়।
সার্ভারে অন্যান্য বাস্তব-জগতের ব্যবহার
ব্যাকআপ ছাড়াও, আপনার সিস্টেমকে পরিষ্কার রাখার জন্য Cron একটি আদর্শ টুল । আপনি সাপ্তাহিক ভিত্তিতে পুরোনো লগ মুছে ফেলার জন্য অথবা যে সার্ভিসগুলো প্রায়ই ক্র্যাশ করে, সেগুলো রিস্টার্ট করার জন্য টাস্ক শিডিউল করতে পারেন। বিভিন্ন মেশিনের মধ্যে rsync ব্যবহার করে ডেটা সিনক্রোনাইজেশনের জন্যও এটি অপরিহার্য , যা মানুষের হস্তক্ষেপ ছাড়াই তথ্যের প্রতিলিপি নিশ্চিত করে।
ওয়েব পরিবেশে, এটি ক্রমাগত গণ ইমেল পাঠাতে , দৈনিক বিক্রয় প্রতিবেদন তৈরি করতে বা কোনো পৃষ্ঠার ক্যাশে আপডেট করতে ব্যবহৃত হয়। মূলত, প্রশাসকের কর্মদক্ষতা বাড়ানোর জন্য যেকোনো পুনরাবৃত্তিমূলক এবং অনুমানযোগ্য কাজ ক্রনের ওপর অর্পণ করা যেতে পারে এবং করা উচিত।
লিনাক্সে অটোমেশনে দক্ষতা অর্জন করলে আপনি ম্যানুয়ালি পরিচালিত একটি সার্ভারকে একটি স্বায়ত্তশাসিত এবং দক্ষ মেশিনে রূপান্তরিত করতে পারেন। ব্যাশ স্ক্রিপ্টের ব্যবহার, ক্রনট্যাবের নির্ভুলতা এবং লগ মনিটরিং-এর সমন্বয়ের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে রক্ষণাবেক্ষণ, নিরাপত্তা এবং ডেটার অখণ্ডতা স্বয়ংক্রিয়ভাবে পরিচালিত হচ্ছে, যা আপনার সময় বাঁচায় এবং অবকাঠামো ব্যবস্থাপনায় মানুষের ভুলের সম্ভাবনা ব্যাপকভাবে কমিয়ে দেয়।



