ลบตัวแทนออกจาก launchd
สารบัญ:
ผู้ใช้ Mac ส่วนใหญ่ไม่จำเป็นต้องปรับแต่ง launchd และ launchctl ด้วยตนเอง แต่มีบางครั้งที่คุณถอนการติดตั้งหรือหยุดใช้แอปใน Mac OS X และตัวแทนบริการยังคงโหลดต่อไปโดยไม่จำเป็น เปิดตัว สิ่งนี้น่ารำคาญ แต่เอเจนต์อันธพาลเหล่านี้สามารถลบออกได้ง่ายผ่านบรรทัดคำสั่ง ดังนั้นให้เปิด Terminal แล้วไปกันเลย นอกจากนี้ยังมีสถานการณ์ที่ผู้ใช้ขั้นสูงอาจต้องการปรับแต่งเอเจนต์ที่โหลดลงใน launchd ไม่ว่าด้วยเหตุผลใดก็ตามไม่ว่าในกรณีใด เราจะให้รายละเอียดเกี่ยวกับวิธีแสดงรายการใน launchd วิธีลบออกจาก launchd ใน OS X และวิธีโหลดเอเจนต์อีกครั้งใน launchd บน Mac
คุณจำเป็นต้องมีความเข้าใจและความสะดวกสบายในการใช้ command line และ Terminal เพื่อใช้งานอย่างถูกต้อง ทำให้เหมาะสำหรับผู้ใช้ขั้นสูงที่มีความรู้เกี่ยวกับ launch daemons และวิธีติดตามพวกเขา ซึ่งบางครั้งเป็นเพียงเรื่องของการค้นหาในการตรวจสอบกิจกรรมของ Mac OS X หรือโดยใช้คำสั่ง launchctl ที่เราจะพูดถึงในไม่ช้า หากคุณตัดสินใจย้อนกลับการแก้ไข คุณยังสามารถโหลดบริการหรือดีมอนกลับเข้าไปใน launchd โดยใช้คำสั่งอื่น ซึ่งจะเลิกทำขั้นตอนการลบเริ่มต้นได้อย่างมีประสิทธิภาพ มาเริ่มกันเลย:
การลบ Launch Agents & Services จาก launchd ใน OS X
นี่คือ วิธีลบบริการออกจาก launchd เปิดใช้ Terminal แล้วใช้ไวยากรณ์ต่อไปนี้กับคำสั่ง launchctl:
launchctl ลบชื่อ
ตัวอย่างเช่น ถ้าฉันต้องการลบบริการชื่อ “com.annoying.service” ไวยากรณ์จะเป็น:
launchctl ลบ com.annoying.service
คุณอาจต้องนำหน้าคำสั่งด้วย sudo เพื่อลบบริการ ในกรณีนี้ คำสั่งจะเป็น:
sudo launchctl ลบ com.annoying.service
ด้วยคำนำหน้า sudo คุณจะต้องป้อนรหัสผ่านผู้ดูแลระบบก่อนที่คำสั่งจะดำเนินการ
วิธีดูสิ่งที่โหลดใน launchd
คุณยังสามารถตรวจสอบสิ่งที่โหลดใน launchd โดยใช้สตริงคำสั่งต่อไปนี้:
เปิดรายการctl
คำสั่งนี้แสดงรายการเอเจนต์และงานทั้งหมดที่โหลดลงใน launchd ทำให้คุณสามารถจัดการกับเอเจนต์ที่กำลังรันอยู่ได้อย่างง่ายดาย เนื่องจากมันทิ้งข้อมูลจำนวนมากลงบนหน้าจอพร้อมกัน คุณอาจต้องการไพพ์ข้อมูลผ่านคำสั่งมากหรือน้อย เช่น:
launchctl list |เพิ่มเติม
ซึ่งช่วยให้คุณกดปุ่มย้อนกลับเพื่อไปยังส่วนต่างๆ ของรายการได้ช้าลง
หากคุณทราบโดยทั่วไปเกี่ยวกับบริการที่คุณกำลังมองหา คุณสามารถใช้ "grep" เพื่อค้นหาบริการตัวแทนที่แม่นยำได้ ลองใช้ 'mdworker' เป็นตัวอย่าง::
launchctl list |grep mdworker
สิ่งนี้จะรายงานกลับเฉพาะ Launchagent ต่อไปนี้:
- 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 (รหัสกระบวนการ) ของบริการที่ใช้งานอยู่เช่นกัน
กำลังโหลดตัวแทนกลับเข้าสู่ launchd
หากคุณตัดสินใจว่าต้องการเปิดใช้งานอีกครั้งและโหลดบริการกลับเข้าไปใน launchd อีกครั้ง ให้ใช้แฟล็ก 'load' ดังนี้:
launchctl โหลด com.example.service.to.load
ตัวแทนบางตัวจะโหลดทันทีโดยไม่มีปัญหา สำหรับผู้อื่น คุณอาจต้องรีบูตเครื่อง Mac ก่อนที่บริการที่โหลดไว้จะทำงานตามที่ตั้งใจไว้อีกครั้ง แม้ว่าบางครั้งการออกจากระบบและกลับเข้ามาใหม่ก็เพียงพอแล้วเช่นกัน