কীভাবে লঞ্চ এজেন্ট বা ডেমন একটি প্রক্রিয়া শুরু করছে তা সন্ধান করবেন


11

অটোডেস্ক স্মোক ইনস্টল করার পরে, আমার দু'টি httpd প্রক্রিয়া সারাক্ষণ চলছে এবং আমি সেগুলি বন্ধ করতে চাই। আমি যখন ব্যবহার করি তখন sudo killall httpdএগুলি থামায় এবং ঠিক এখনই পুনরায় চালু করা হয়। ক্রিয়াকলাপ পর্যবেক্ষণ দেখায় যে পিতামাতার প্রক্রিয়া চালু হয়েছে তবে আমি কীভাবে এটি নির্ধারণ করব যে কোন এজেন্ট বা ডেমন এটি শুরু করছে যাতে আমি এটি অক্ষম করতে পারি?

launchctl list | grep httpd এই ফলাফলগুলি দেখায়:

302 -   0x7f94ea700dd0.anonymous.httpd  
92  -   org.apache.httpd

আমি তাকান /System/Library/LaunchDaemons/org.apache.httpd.plistএবং এটি নিম্নলিখিতটি দেখায়। আপনি এটি সেট করা দেখতে পারেন disabledlaunchdএকটি অদ্ভুত নামযুক্ত অন্য আইটেমটি ফাইল সিস্টেম অনুসন্ধানে প্রদর্শিত হয় না, সুতরাং এটি কী তা আমার কোনও ধারণা নেই।

<?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>Disabled</key>
    <true/>
    <key>Label</key>
    <string>org.apache.httpd</string>
    <key>EnvironmentVariables</key>
    <dict>
        <key>XPC_SERVICES_UNAVAILABLE</key>
        <string>1</string>
    </dict>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/httpd</string>
        <string>-D</string>
        <string>FOREGROUND</string>
    </array>
    <key>OnDemand</key>
    <false/>
</dict>
</plist>

আমি অটোডেস্কের কাছ থেকে শিখেছি যে আমি এই প্রক্রিয়াটি দিয়ে থামাতে /usr/sbin/apachectl stopপারি তবে এখনও প্রতিটি রিবুটের পরে কীভাবে এটি অক্ষম করতে হয় তা আমি জানি না।
এলিয়ট

(দেরিতে মন্তব্য, আমি জানি!) এটি আবার শুরু করা থেকে দুটি চালু হওয়া বন্ধ হওয়ার সম্ভাবনা রয়েছে: (i) launchctl unload(যদিও আমি জানি না যে এটির জন্য আপনাকে প্লাস্টের পথ নির্দিষ্ট করতে হবে কিনা), (ii) এটি যদি আপনার লগইনাইটেমগুলিতে থাকে তবে , সিস্টেম পছন্দসমূহ সরঞ্জামটি ব্যবহার করুন -> "ব্যবহারকারী এবং গোষ্ঠী" -> "লগইন আইটেম" -> যদি পাওয়া যায় তবে আপত্তিজনক এন্ট্রি মুছুন।
বিবেক

উত্তর:


5

আপনি পিডের আউটপুট গ্রেপ করতে পারেন launchctl list:

$ pgrep -fl foo
40679 bash /tmp/foo
$ launchctl list|grep 40679
40679   -   com.example.foo

তারপর নামের একটি ফাইল উদাহরণস্বরূপ চেহারার জন্য com.example.foo.plistমধ্যে ~/Library/LaunchAgents/, /Library/LaunchAgents/অথবা /Library/LaunchDaemons/

সম্পাদনা করুন: অক্ষম কীটি এতে ওভাররাইড করা যেতে পারে /var/db/launchd.db/com.apple.launchd/overrides.plist, যা launchctl load -wরুট হিসাবে চালিত হওয়ার পরে সংশোধিত হয় বা ব্যবহারকারী হিসাবে চালিত /var/db/launchd.db/com.apple.launchd.peruser.$UID/overrides.plistহলে সংশোধিত launchctl load -wহয়।

ওএস এক্সের সাথে আসা অ্যাপাচি প্লাস্টটি যদি সক্ষম করা থাকে তবে আপনি এটি চালিয়ে অক্ষম করতে পারেন sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist


আমি পিআইডি পেয়েছি, তারপরে লঞ্চাক্টেল গ্রেপড করেছিলাম কিন্তু সেই নম্বরটি দিয়ে কিছুই পাইনি।
এলিয়ট

আসলে ব্যবহার করার চেষ্টা করুন sudo launchctl listlaunchctl listকেবল ব্যবহারকারীর প্রবর্তিত প্রক্রিয়া দ্বারা লোড করা কাজ অন্তর্ভুক্ত বলে মনে হয়।
ল্রি

ঠিক আছে যে অর্থ দেয়, আপনাকে ধন্যবাদ। তবে সমস্যাটি আসলেই সমাধান করেনি ... আমি প্রশ্নের সাথে আরও বিশদ যুক্ত করেছি।
ইলিয়ট

0

এই আপনি সব কাজ সংজ্ঞা উল্লেখ একটি তালিকা দেয় httpd

grep -lR httpd /System/Library/Launch*/ /Library/Launch*/ ~/Library/LaunchAgents/

ভাল ধারণা, কিন্তু সমস্যার সমাধান হয়নি। কেবলমাত্র একটি ফলাফল রয়েছে এবং এটি অক্ষম। আমি প্রশ্নের সাথে আরও বিশদ যুক্ত করেছি।
ইলিয়ট

1
এটি অক্ষম হওয়ার কারণে এর অর্থ এই নয় যে এটি শুরু করা হয়নি। Disabledকী মাধ্যমে ওভাররাইড করা যেতে পারে overrides.plistনিচের / ফাইল /var/db/launchd.db/। এছাড়াও একটি অক্ষম কাজ এখনও ম্যানুয়ালি (বুট / লগইন প্রক্রিয়া চলাকালীন স্বয়ংক্রিয়ভাবে নয়) শুরু হতে পারে।
এলসিসি

ধন্যবাদ, আমি এটি সম্পর্কে জানতাম না। আমি চেষ্টা করেছি grep -rn apache /private/var/db/launchd.dbএবং কেবল একটি ফলাফল পেয়েছি। এটি অক্ষম। এই পরিষেবাটি কীভাবে শুরু হচ্ছে এবং কীভাবে সত্যিকার অর্থে এটি নিষ্ক্রিয় করা যায় তা আমাকে খুঁজে বের করতে হবে।
এলিয়ট

0

লঞ্চাক্টেলের আচরণটি পরিবর্তিত হয়েছে যে কোনও পরিষেবা যদি জোর করে সক্রিয় করা হয় তবে এটি উত্স .plist এর বিষয়বস্তুগুলিকে পরিবর্তন করবে না , তবে একটি পৃথক ডিরেক্টরি (যা আপনি সংশোধন করবেন না)। লঞ্চাক্টেলের জন্য ম্যান পৃষ্ঠাটি এবং "লোড" কমান্ডের অধীনে "-w" বিকল্পটি পরীক্ষা করুন। সুতরাং, কেবল ফাইলটি পরীক্ষা করার জন্য এটির অক্ষম আছে কিনা তা আপনাকে জানাতে হবে না। স্পষ্টতই এটি অক্ষম নয় :)

"লঞ্চটেল আনলোড -w org.apache.httpd.plist" চেষ্টা করুন। যদি এটি আপনার পক্ষে কাজ করে তবে আপনি এটি "প্রবর্তক org.apache.httpd.plist" দিয়ে চাহিদা অনুযায়ী শুরু করতে সক্ষম হবেন

যদি এটি কাজ না করে, "লঞ্চক্টেল অপসারণ org.apache.httpd.plist" চেষ্টা করুন যা আপনাকে ম্যানুয়ালি শুরু করতে দেয় না।


0

লেবেল মান (উদাহরণস্বরূপ org.apache.httpd) এর উপর ভিত্তি করে , আপনি .plistনিম্নলিখিত কমান্ডটি ব্যবহার করে অনুসন্ধান করার চেষ্টা করতে পারেন :

find /System/Library/Launch* /Library/Launch* ~/Library/Launch* -name '*.plist' -print -exec /usr/libexec/PlistBuddy -c "Print Label" {} ';' | grep org.apache.httpd -A1

প্রক্রিয়াটি কী শুরু হয়েছিল তা সন্ধান করার জন্য, এর প্যারেন্ট পিআইডি পরীক্ষা করুন

ps -f $(launchctl list | grep org.apache.httpd | grep -o '^[0-9]\+')

অথবা pstreeম্যানুয়ালি পিআইডি নির্দিষ্ট করে কমান্ড ব্যবহার করুন , যেমন

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