আমি কীভাবে ওএস এক্সে লঞ্চ করা লগিং সক্রিয় করব?


35

আমি কীভাবে ওএস এক্স 10.6 এ লঞ্চ করা লগিং সক্রিয় করব?

আমি একটি নতুন ডেমন যুক্ত করেছি যা সঠিকভাবে শুরু হচ্ছে না (স্ট্যাটাসটি হ'ল 1)।

আমি সমস্যাটি ডিবাগ করতে চাই কিন্তু আমি launchdলগগুলি সন্ধান করতে পারিনি, সেগুলি নেই /var/log/launchd.log

উত্তর:


26

আমি সমাধান খুঁজে পেয়েছি

 sudo launchctl log level debug 

এবং এই পরে

 tail -f /var/log/system.log

1
আমি বুঝতে পেরেছি যে অন্য কোনও কিছুর মতো এই ওএসেরও অ্যাডমিন দরকার। "ডাব্লুটিএফটি হ'ল ভার্বোজের পতাকাটি কোথায়!" চিৎকার করার একদিন পর পুরোপুরি এটির সন্ধান করছিল! ওএসএক্স শিলা, নিশ্চিত, তবে একটি হ্যান্ডেল চালু করার জন্য কৃপণ। Thx +1
চিগসসি

অনুসরণ করুন, এফওয়াইআই: এটি ওএস এক্স 10.7.2 এর সাথেও কাজ করে। ধন্যবাদ।
অ্যালান ডাব্লু স্মিথ

আমার চিতাবাঘ সার্ভারগুলির সাথে আমার সমস্যা হচ্ছে এবং আমি ভেবেছিলাম যে আমার লঞ্চ করা প্লিস্টের সাথে কিছু সমস্যা হয়েছে (যদিও একই বরফ স্নো লিওপার্ডে কাজ করে)। আমি এতে হোঁচট খেতে পেরেছি এবং এটি কবজ মত কাজ করে :)
আইসাসিম্পান

27
এটি এখন থেকে 10.10 ইয়োসেমাইট থেকে কাজ করে না। প্রবর্তন সংস্করণ: ডারউইন সিস্টেম বুটস্ট্র্যাপার 2.0.0: মঙ্গলবার 9 সেপ্টেম্বর 16:30:56 পিডিটি 2014
জিনমার্টজ

9
@ জিনমার্টজ - কোন বিকল্প?
উমং

20

ধরে নিচ্ছেন আপনি লঞ্চ করা প্লিস্ট ফাইলটিতে নিম্নলিখিত লাইনগুলি অন্তর্ভুক্ত করা থাকলে আপনি নিজেই প্রবর্তন না করে নিজের প্রক্রিয়াটি লগ করার চেষ্টা করছেন:

<key>StandardOutPath</key>
<string>/path/to/logfile.log</string>
<key>StandardErrorPath</key>
<string>/path/to/another_logfile.log</string>

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

দেখুন: লঞ্চ ডেমোনস এবং এজেন্ট তৈরিতে ডিবাগিং লঞ্চ চাকরি বিভাগ


17

ওএস এক্স 10.11 (এল ক্যাপিটান) এ, আপনি sudo launchctl debug <service-target> --stdout --stderrযদি একটি অ্যাপ-অফার দ্বারা প্রস্তাবিত ফাইল-সিস্টেম বিকল্পটি না নিতে চান তবে আপনি ওয়ান-অফ লগিং সক্ষম করতে ব্যবহার করতে পারেন ।

বর্তমান বাস্তবায়নে প্রচুর স্টাফ আলাদা launchctlএবং এটি <service-target>এক ধরণের অদ্ভুত। উদাহরণস্বরূপ, ধরুন আমার কাছে একটি স্থানীয় পরিষেবা আছে যা আমি কনফিগার করেছি ~/Library/LaunchAgents/dev.localmon.plist, যার "লেবেল" রয়েছে dev.localmon। তার <service-target>হয় gui/$UID/dev.localmonযেখানে, $UIDআপনার ইউজার আইডি, যা, যেহেতু আপনি CLI এই চালাচ্ছেন, আপনার শেল তোমার জন্য ঢুকান হবে।

সুতরাং মনে করুন যে আমার dev.localmonপরিষেবাটি স্টার্টআপে ক্র্যাশ হয়ে গেছে (এটি ছিল), launchctlপরের বার (এবং কেবলমাত্র পরবর্তী সময়) পরিষেবাটি শুরুর পরে আমি শেলটিতে প্রক্রিয়াটির স্টাডআউট এবং স্টার্ডারটি পাইপ করার জন্য নিম্নলিখিতগুলিকে কল করতে পারি :

sudo launchctl debug gui/$UID/dev.localmon --stdout --stderr

যেহেতু এটি উন্মুক্ত এবং প্রস্তুত টিটিওয়াইয়ের সাথে ঝুলছে, অন্য টার্মিনালে যান এবং চালান:

launchctl start dev.localmon
# start is a legacy command and doesn't use the fancy new service-target notation

তারপর, প্রথম টার্মিনাল ফিরে, আপনি উচিত আউটপুট দেখুন। (অদ্ভুতভাবে, পরিষেবা প্রক্রিয়াটি মারা গেলে এটি বন্ধ হয় না, সুতরাং আপনাকে Ctrl-C করতে হবে))

বিটিডব্লিউ, একবার আপনার কনফিগারেশন ফাইলটি যা আগে প্যাথ বা পরিবেশ সেবার ভাঙ্গছিল তার সাথে ঠিক করে ফেললে, আপনাকে এখনও পুরানো launchctl unload ~/Library/LaunchAgents/dev.localmon.plist && launchctl load ~/Library/LaunchAgents/dev.localmon.plistদ্বি-পদক্ষেপটি ব্যবহার করতে হবে যেহেতু ডকুমেন্টেশনের তৈরি uncacheসাবকম্যান্ডের নীচের প্রভাব রয়েছে:

কমান্ড এখনও কার্যকর করা হয়নি।

অ্যাপলের পোস্ট-জবস প্রকাশের কৌশলটির জন্য হ্যাঁ: "দ্রুত সরান এবং জিনিসগুলি বিরতি দিন"


sudo launchctl debugCould not find domain forআমার সাথে প্রস্থান
টম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.