launchd হল স্ক্রিপ্ট এবং প্রসেস শুরু, বন্ধ এবং পরিচালনা করার একটি টুল। আপনি যদি লিনাক্সের যেকোন সংস্করণের সাথে কাজ করেন তবে আপনি ক্রনের সাথে পরিচিত হতে পারেন। লঞ্চ করা হয় মূলত cron in macOS।
ডেমন কি?
ডেমনস (উচ্চারিত "দানব") হল স্ক্রিপ্ট যা ব্যাকগ্রাউন্ডে চলে। অ্যাপ্লিকেশনের বিপরীতে, ডেমনগুলি প্রক্রিয়া হিসাবে চলে এবং ব্যবহারকারী বা অন্য অ্যাপ্লিকেশনের সরাসরি নিয়ন্ত্রণে থাকে না। macOS-এ তারা লঞ্চ করা ফ্রেমওয়ার্কের অধীনে থাকে যা সিদ্ধান্ত নেয় কখন তারা শুরু করবে এবং কখন থামবে।
অস্বাভাবিক নামটি এসেছে ম্যাক্সওয়েলের রাক্ষস থেকে, একটি কাল্পনিক এজেন্ট যা একটি তাপগতিবিদ্যা চিন্তা পরীক্ষায় অণুগুলিকে সাজায়৷
স্ক্রিপ্ট লেখা
লঞ্চের মাধ্যমে ডেমন চালানোর জন্য, আপনাকে কিছু স্ক্রিপ্ট লিখতে হবে। সবচেয়ে সাধারণ স্ক্রিপ্টিং ভাষা হল bash। আপনি যদি ব্যাশ স্ক্রিপ্টিং সম্পর্কে আরও জানতে চান, আপনি ব্যাশ স্ক্রিপ্টিংয়ের জন্য আমাদের শিক্ষানবিস গাইডটি দেখতে পারেন৷
লঞ্চ করা ব্যবহার করা হচ্ছে
লঞ্চ করা স্ক্রিপ্টগুলি কাজের সংজ্ঞা দ্বারা ট্রিগার করা হয় যা নির্দিষ্ট ডিরেক্টরিতে সংরক্ষিত .plist ফাইল। এই XML ফাইলগুলি কাজের একটি নাম দেয়, যে স্ক্রিপ্টটি চালু করা উচিত তা নির্দিষ্ট করে এবং কখন স্ক্রিপ্ট চালানো উচিত তা নির্দেশ করে। একবার আপনি আপনার স্ক্রিপ্টটি লিখলে, আপনি একটি কাজের সংজ্ঞা লিখবেন এবং লোড করবেন যা উপযুক্ত সময়ে স্ক্রিপ্টটি চালু করবে।
একটি কাজের সংজ্ঞা নীচের মত কিছু দেখায়:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>local.restart</string> <key>Program</key> <string>/Users/user/Scripts/restart.sh</string> <key>RunAtLoad</key> <true/> </dict> </plist>
প্রয়োজনমতো পরিবর্তন করুন, তারপর সঠিক ডিরেক্টরিতে নামানোর আগে এটিকে .plist এক্সটেনশন সহ একটি পাঠ্য ফাইলে রাখুন (নীচে দেখুন)।
কাজের বিবরণে কয়েকটি মূল অংশ রয়েছে:
- লেবেল:৷ লঞ্চের মধ্যে কাজের নাম। প্রতিটি কাজের জন্য অনন্য হতে হবে. এগুলি বিপরীত ডোমেন স্বরলিপিতে লেখা হয় এবং "স্থানীয়" ব্যক্তিগত এজেন্টদের জন্য একটি দুর্দান্ত ডোমেন৷
- প্রোগ্রাম: স্ক্রিপ্টের সম্পূর্ণ পথ এই কাজের বিবরণ চালু হয়।
- RunAtLoad: স্ক্রিপ্ট কখন চালানো উচিত তা বর্ণনা করে। এখানে কয়েকটি ভিন্ন বিকল্প রয়েছে:
- RunAtLoad :কাজের সংজ্ঞা লোড হওয়ার সাথে সাথে চালান। প্রতি লোড মাত্র একবার চলে।
- StartInterval :প্রতি n কাজ শুরু করুন সেকেন্ড এই উদাহরণটি প্রতি 7200 সেকেন্ড বা প্রতি 2 ঘন্টা কাজ চালাবে।
<key>StartInterval</key> <integer>7200</integer>
- StartCalendarInterval :একটি নির্দিষ্ট সময় এবং তারিখে কাজ চালান। নিচের কোডটি প্রতিদিন সকাল ৯টায় কাজ চালাবে।
<key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>9</integer> <key>Minute</key> <integer>0</integer> </dict>
এজেন্ট বনাম ডেমন
একবার আপনি আপনার কাজের বিবরণ লিখলে, আপনাকে এটি যথাযথ ডিরেক্টরিতে সংরক্ষণ করতে হবে।
লঞ্চ এজেন্ট এবং ডেমনের মধ্যে আরও পার্থক্য করে। একটি এজেন্ট লগ ইন করা ব্যবহারকারীর পক্ষে কাজ করে, যখন একটি ডেমন রুট ব্যবহারকারীর অধীনে চলে। এর মানে হল যে আপনি যদি একটি স্ক্রিপ্ট একটি নির্দিষ্ট ব্যবহারকারী অ্যাকাউন্টে সীমাবদ্ধ করতে চান তবে আপনি একটি এজেন্ট ব্যবহার করতে পারেন। আপনি যদি লগ ইন করা যাই হোক না কেন কিছু চালাতে চান, আপনি একটি ডেমন ব্যবহার করবেন।
এজেন্ট এবং ডেমনের মধ্যে পার্থক্য টানা হয় যেখান থেকে তারা কম্পিউটারে সংরক্ষিত হয়:
- “~/Library/LaunchAgents” লগ-ইন করা ব্যবহারকারীর পক্ষে চলে
- “/Library/LaunchDaemons” রুট ব্যবহারকারীদের পক্ষে চলে
আপনাকে সঠিক অবস্থানে আপনার plist সংরক্ষণ করতে হবে।
লঞ্চসিটিএল-এ চাকরি লোড হচ্ছে
একবার আপনি আপনার স্ক্রিপ্ট তৈরি করে ফেললে এবং আপনার এজেন্টকে সঠিক জায়গায় সংরক্ষণ করলে, আপনাকে এটি launchctl
-এ লোড করতে হবে . ভবিষ্যতে লগইন করার সময় এটি স্বয়ংক্রিয়ভাবে ঘটবে৷
বর্তমানে laucnhctl এ কি চলছে তা দেখতে, আপনি launchctl list
ব্যবহার করতে পারেন টার্মিনালে এই বিশাল তালিকাটি আপনার স্ক্রিপ্টের জন্য এটিকে নিম্নলিখিতগুলির মতো কিছু দিয়ে লেবেল করে গ্রেপ করা যেতে পারে:
launchctl list | grep local.restart
একটি স্ক্রিপ্ট লোড করতে, টার্মিনাল খুলুন এবং নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
launchctl load ~/Library/LaunchAgents/local.restart.plist
launchctl সারি থেকে স্ক্রিপ্ট সরাতে, unload
ব্যবহার করুন কমান্ড:
launchctl unload ~/Library/LaunchAgents/local.restart.plist
একটি কাজ লোড করা হলে তা লঞ্চ করা সারিতে চলে যায় এবং কাজটি লঞ্চের শর্তে নির্দিষ্ট সময়ে চলবে। আপনি যদি অবিলম্বে একটি স্ক্রিপ্ট চালাতে চান যাই হোক না কেন, আপনাকে "স্টার্ট" কমান্ডটি ব্যবহার করা উচিত:
launchctl start local.restart
এই কমান্ডটি কাজের লেবেল নেয় এবং কাজটি ইতিমধ্যেই launchctl
এ লোড করা থাকলেই কাজ করবে। .
উপসংহার
আপনি স্ক্রিপ্ট তৈরি করতে লঞ্চড ব্যবহার করতে পারেন যা ফাইলগুলি পরিষ্কার করার মতো কাজ করে, একটি সময়সূচীতে আপনার সার্ভার পুনরায় চালু করা বা একটি নির্দিষ্ট ফাইল উপস্থিত হলে একটি অ্যাপ্লিকেশন চালানো। লঞ্চ করা সম্পর্কে আরও অনেক কিছু জানতে, আপনি laucnhd টিউটোরিয়ালটি দেখতে পারেন।