นำตัวแทนออกจาก 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 ก่อนที่บริการที่โหลดจะทำงานตามที่ตั้งใจไว้อีกครั้งแม้ว่าบางครั้งการล็อกเอาต์และกลับเข้าระบบก็เพียงพอเช่นกัน