আমি রুট হিসাবে লঞ্চ করা কমান্ডটি কীভাবে চালাব


32

আমার কাছে .plist ফাইল হিসাবে নীচের লঞ্চাক্টেল কমান্ড রয়েছে। এটি লোড এবং দিনে একবার চালানোর জন্য সেট করা হয়েছে তবে এটির মূল হিসাবে চালানো দরকার এবং এটি কীভাবে যাচাই করা যায় তা আমি নিশ্চিত নই।

এছাড়াও, এই ক্রোন জবটি মূলত একটি ডিরেক্টরিতে সিডি করে এবং একটি কমান্ড চালায়। আমি নিশ্চিত যে কমান্ডটি চালানোর কথা সেই ডিরেক্টরিটি নির্দিষ্ট করার জন্য লঞ্চের আরও ভাল উপায় রয়েছে।

আমি কীভাবে জানতে পারি যে এটি মূল হিসাবে চালিত হয়েছে এবং এটি লেখার আরও ভাল কোনও উপায় আছে?

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>dev.project.frontpage.feedparser</string>
    <key>ProgramArguments</key>
    <array>
        <string>cd</string>
        <string>/Users/eman/src/project/trunk/includes/;</string>
        <string>./feed-parser.php</string>
        <string>-c</string>
        <string>./feed-parser-config.xml</string>
    </array>
    <key>QueueDirectories</key>
    <array/>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>12</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
    <key>WatchPaths</key>
    <array/>
</dict>
</plist>

উত্তর:


46

কোন ফোল্ডারে .plistসঞ্চিত আছে?

launchdডেমোনস ( /Library/LaunchDaemonsবা /System/Library/LaunchDaemons) রুট হিসাবে চালায় এবং ব্যবহারকারীরা লগ ইন করেছেন কিনা তা নির্বিশেষে এগুলি চালাবে। কোনও ব্যবহারকারী সেই ব্যবহারকারী হিসাবে লগ ইন করলে লঞ্চ এজেন্টস ( /Library/LaunchAgents/বা ~/Library/LaunchAgents/) চালানো হয়। আপনি ডেমনগুলিতে স্ক্রিপ্টটি চালাচ্ছেন এমন ব্যবহারকারীকে পরিবর্তন করতে সেতুড ব্যবহার করতে পারবেন না।

যেহেতু আপনি এটি এতে যুক্ত /Library/LaunchDaemonsকরতে চান আপনি launchdপ্রশাসকের সুযোগসুবিধা (যেমন, sudo launchctl load -w /Library/LaunchDaemons/com.apple.samplelaunchdscript.plist) এর সাথে এটি লোড করেছেন তা নিশ্চিত করতে চাইবেন

পরীক্ষা করে দেখুন man launchdআরও তথ্যের জন্য।


ধন্যবাদ. মূল সমস্যাটির উত্তর হিসাবে আমি ঠিক এটিই খুঁজছিলাম। স্ক্রিপ্টটি / লাইব্রেরি / লঞ্চডেমনে রয়েছে তাই এটি ইতিমধ্যে মূল হিসাবে চলছিল।
এমমানুয়েল মাওয়াঙ্গি

একটি নবাগত প্রশ্ন: launchctlএকটি ডেমন ইনস্টল করার জন্য চলছে কি? মানে, প্লাস্ট ফাইলটি সংশ্লিষ্ট পথে কপি করা যথেষ্ট নয় কি?
ক্লডিক্স

@ ক্লাডিক্স: এটি সঠিক। জায়গায় চালু করা কনফিগারেশন অনুলিপি করা যথেষ্ট নয় - আপনাকে এখনও "চালু করতে হবে" (লঞ্চক্টল লোড)
চ্যালিওন

4

আপনি কি লঞ্চ করা সম্পাদকগুলির মধ্যে একটি ব্যবহার করার চেষ্টা করেছেন?

এটি রুট হিসাবে চালিত হয়েছে তা নিশ্চিত করতে, আমি নিশ্চিত যে প্রবর্তিত প্রোগ্রামগুলি মূল হিসাবে চালাবেন। কখনও কি chmod ব্যবহার করে স্ক্রিপ্টটির মালিকানা দেওয়ার কথা ভাবেন? এইভাবে, মূল হিসাবে চালানো না হলে এটি চলবে না। আপনাকে এটি যাচাই করে তা যাচাই করতে হবে।

sudo chown root:admin script_to_run_by_launchd

এই লিপিটি লিখতে আমি লিঙ্গন ব্যবহার করেছি। এবং আমি এটি নিশ্চিত করতে পারি যে এটি চিতাবাঘে ভাল কাজ করে।
এমমানুয়েল মাওয়াঙ্গি

3

লঞ্চএজেন্টসগুলিতে সম্পত্তি তালিকাগুলিও কাজ করে তবে আপনাকে এজেন্ট এবং ডিমন উভয়ই সুডো সহ লোড করতে হবে:

sudo chown root /Library/LaunchAgents/test.plist
sudo launchctl load /Library/LaunchAgents/test.plist

যদি প্লিস্টে কোনও অক্ষম কী না থাকে তবে এটি পরবর্তী লগইনে লোড হয় বা ডিফল্টরূপে পুনরায় চালু হয় এবং -wএটি প্রয়োজনীয় নয়।

প্রযুক্তিগত নোট TN2083: ডেমন এবং এজেন্টস :

ডেমন এমন একটি প্রোগ্রাম যা সামগ্রিক সিস্টেমের অংশ হিসাবে পটভূমিতে চলে (এটি কোনও নির্দিষ্ট ব্যবহারকারীর সাথে আবদ্ধ নয়)। ডিমন কোনও জিইউআই প্রদর্শন করতে পারে না; আরও নির্দিষ্টভাবে, এটি উইন্ডো সার্ভারের সাথে সংযোগ করার অনুমতি নেই।

[...]

এজেন্ট এমন একটি প্রক্রিয়া যা কোনও নির্দিষ্ট ব্যবহারকারীর পক্ষে পটভূমিতে চলে। এজেন্টগুলি দরকারী কারণ তারা এমন কিছু করতে পারে যা ডেমনগুলি ব্যবহার করতে পারে না, যেমন নির্ভরযোগ্যভাবে ব্যবহারকারীর হোম ডিরেক্টরি অ্যাক্সেস করতে বা উইন্ডো সার্ভারের সাথে সংযোগ স্থাপন করতে পারে।


3

গুগলকারীরা বিশেষত কোনও লঞ্চ ডেমনের অভ্যন্তরে মূল সুবিধাগুলি সহ একটি লঞ্চ এজেন্ট পরিচালনা করতে চাইছেন তাদের দ্বারা এটি করা যেতে পারে:

  • এতে আপনার লঞ্চএজেন্ট তৈরি করুন ~/Library/LaunchAgents
  • আপনার প্লাস্টে sudoথাকা ProgramArgumentsসম্পত্তিটির মাধ্যমে আপনার অ্যাপ্লিকেশনটি চালান
  • NOPASSWDআপনার অ্যাপ্লিকেশনটির জন্য বিকল্পটি সেট করুন/etc/resolvers.d

আরও বিশদ জন্য, এই এবং এই উত্তর দেখুন।


2

লঞ্চকন্ট্রোল এটিকে আমার জন্য জোসেমাইটে ব্যথাহীন করে তুলেছে। আপনাকে পরিষেবাগুলি তৈরি করতে বা সম্পাদনা করতে সহায়তা করার জন্য এটির একটি দুর্দান্ত ড্রাগ-এন-ড্রপ জিইউআই রয়েছে। আমি যে পরিষেবাগুলি জানতাম না সেগুলি চলমান দেখে অবাক হয়েছিল।

ধাপ

  1. LaunchControl শুরু করুন
  2. গ্লোবালডিমনে শীর্ষ-বাম পরিবর্তন এবং আপনার প্রশাসক পাসওয়ার্ড লিখুন
  3. File-> নতুন
  4. লেবেলের অধীনে, এটি একটি অনন্য নাম দিন। কনভেনশনটি হ'ল "com.company.appname"
  5. ইউনিক্স শেল স্ক্রিপ্ট বা আর্গুমেন্ট ছাড়া আপনি যে কোনও কমান্ড পছন্দ করেন তা চালানোর জন্য প্রোগ্রামের অধীনে
  6. যদি আপনার অ্যাপ্লিকেশনটির পক্ষে যুক্তিগুলির প্রয়োজন হয় তবে ড্রপডাউন ক্ষেত্রটি "ডিফল্ট আরজিভি" থেকে "কাস্টম আরজিভি" তে পরিবর্তন করুন
    1. আপনি আসল কমান্ড লাইন থেকে চালানোর জন্য এখন আপনি যে যুক্তিটি স্বাভাবিক করবেন তা সরবরাহ করুন।
  7. রান এট লোড optionচ্ছিক, আপনি সিদ্ধান্ত নিন।
  8. ডান দিক থেকে, স্টার্টইন্টারওয়ালাকে টেনে আনুন এবং আপনার পছন্দসই বিরতি সেট করুন। সহায়তা মেনুতে FAQ খুব ভাল।

প্রশ্নকর্তা তাদের সমস্যার সমাধান করতে যে পদক্ষেপ নিতে পারেন তা অন্তর্ভুক্ত করার জন্য আপনি কি আপনার পোস্টটি সম্পাদনা করতে পারেন?
সিফিনলে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.