นำตัวแทนออกจาก launchd

ผู้ใช้ Mac ส่วนใหญ่ไม่จำเป็นต้องเปิดตัว launchd และ launchctl ด้วยตนเอง แต่มีบางครั้งที่คุณถอนการติดตั้งหรือหยุดใช้แอปใน Mac OS X และตัวแทนบริการยังคงโหลด launchd โดยไม่จำเป็น นี้เป็นที่น่ารำคาญ แต่เหล่านี้ตัวแทนโกงง่ายต่อการลบผ่านทางบรรทัดคำสั่งเพื่อเปิด Terminal และไปเราไป นอกจากนี้ยังมีสถานการณ์ที่ผู้ใช้ขั้นสูงอาจต้องการปรับแต่งตัวแทนที่โหลดเข้าสู่ launchd ไม่ว่าจะด้วยเหตุใดก็ตาม ไม่ว่าในกรณีใด ๆ เราจะอธิบายรายละเอียดวิธีการแสดงรายการใน launchd วิธีการนำพวกเขาออกจาก launchd ใน OS X และวิธีโหลดตัวแทนอีกครั้งใน launchd บนเครื่อง Mac

คุณจำเป็นต้องมีความเข้าใจและความสะดวกสบายในการใช้บรรทัดคำสั่งและเทอร์มินัลเพื่อใช้อย่างถูกต้องทำให้เหมาะสำหรับผู้ใช้ขั้นสูงที่มีความรู้เกี่ยวกับ daemons เปิดตัวและวิธีติดตามพวกเขาซึ่งบางครั้งก็เป็นเพียงเรื่องเท่านั้น ของการค้นหาในการตรวจสอบกิจกรรมของ Mac OS X หรือโดยใช้คำสั่ง launchctl ที่เราจะกล่าวถึงในไม่ช้า หากคุณตัดสินใจที่จะกลับการแก้ไขคุณสามารถโหลดบริการหรือ daemon กลับเข้าสู่ launchd โดยใช้คำสั่งอื่นซึ่งจะยกเลิกขั้นตอนการลบครั้งแรกได้อย่างมีประสิทธิภาพ ลองไปที่:

การลบ Launch Agents & Services ออกจาก launchd ใน OS X

นี่คือ วิธีการลบบริการออกจาก launchd เรียกใช้ Terminal จากนั้นใช้ไวยากรณ์ต่อไปนี้ด้วยคำสั่ง launchctl:

launchctl remove name

ตัวอย่างเช่นถ้าฉันต้องการลบเซอร์วิสชื่อว่า "com.annoying.service" ไวยากรณ์จะเป็นดังนี้:

launchctl remove com.annoying.service

คุณอาจต้องคำนำหน้าคำสั่งด้วย sudo เพื่อลบบริการในกรณีนี้คำสั่งจะเป็น:

sudo launchctl remove com.annoying.service

ด้วยคำนำหน้า sudo คุณจะต้องป้อนรหัสผ่านของผู้ดูแลระบบก่อนที่คำสั่งจะรัน

วิธีดูสิ่งที่โหลดใน launchd

นอกจากนี้คุณยังสามารถตรวจสอบว่ามีอะไรโหลดลงใน launchd โดยใช้สตริงคำสั่งต่อไปนี้:

launchctl list

คำสั่งนี้จะแสดงรายการตัวแทนและงานทั้งหมดที่โหลดลงใน launchd เพื่อให้คุณจัดการกับเอเจนต์ที่กำลังทำงานได้อย่างง่ายดาย เนื่องจากข้อมูลนี้ทิ้งข้อมูลลงบนหน้าจอในเวลาเดียวกันคุณอาจต้องการสั่งงานผ่านคำสั่งที่มากหรือน้อยเช่นนี้:

launchctl list |more

ซึ่งช่วยให้คุณสามารถกดปุ่ม return เพื่อเลื่อนดูรายการได้อย่างช้าๆ

ถ้าคุณรู้โดยทั่วไปว่าบริการที่คุณต้องการคุณสามารถใช้ "grep" เพื่อหาบริการตัวแทนได้อย่างแม่นยำลองใช้ 'mdworker' เป็นตัวอย่าง ::

launchctl list |grep mdworker

นี้จะรายงานเฉพาะ launchagents ต่อไปนี้:

- 0 com.apple.mdworker.sizing
- 0 com.apple.mdworker.single
- 0 com.apple.mdworker.shared
- 0 com.apple.mdworker.mail
- 0 com.apple.mdworker.lsb
- 0 com.apple.mdworker.isolation
- 0 com.apple.mdworker.bundles
- 0 com.apple.mdworker.32bit

สำหรับบริการบางประเภทการทิ้งรายการอาจแสดง PID (ID กระบวนการ) ของบริการที่ใช้งานด้วยเช่นกัน

กำลังโหลดตัวแทนกลับเข้าสู่ launchd

ถ้าคุณต้องการให้เปิดใช้งานอีกครั้งและโหลดบริการกลับเข้าสู่ launchd ให้ใช้ค่าสถานะ 'load' ดังนี้:

launchctl load com.example.service.to.load

ตัวแทนบางแห่งจะโหลดได้ทันทีโดยไม่มีปัญหา สำหรับคนอื่น ๆ คุณอาจต้องรีบู๊ตเครื่อง Mac ก่อนที่บริการที่โหลดจะทำงานตามที่ตั้งใจไว้อีกครั้งแม้ว่าบางครั้งการล็อกเอาต์และกลับเข้าระบบก็เพียงพอเช่นกัน