ฉันจะใช้คำสั่ง launchctl ที่ไม่ใช่ "ดั้งเดิม" เพื่อโหลดและยกเลิกการโหลดได้อย่างไร


14

ฉันมีไฟล์ plist บาง~/Library/LaunchAgentsตัว

ฉันใช้launchctl load -wและlaunchctl unload -wเปิดและปิดสิ่งเหล่านี้อย่างมีความสุขมานานหลายปี อย่างไรก็ตามฉันสังเกตเห็นว่าตอนนี้loadและunloadได้ลดระดับลงในส่วน "ดั้งเดิม" ของหน้าเว็บมนุษย์ หนึ่งสาย Let 's com.example.service.plistของพวกเขา

อย่างไรก็ตามเมื่อฉันพยายามโต้ตอบกับ plists เหล่านี้ผ่านทางlaunchctl enable "gui/$(id -u)/com.example.service"และlaunchctl disable "gui/$(id -u)/com.example.service"คำสั่ง launchd อื่น ๆดูเหมือนจะรายงานความสำเร็จ - ตัวอย่างเช่นlaunchctl print "gui/$(id -u)"ทั้งหมดแสดงให้ฉันเห็นธงที่ถูกปิดใช้งานที่สอดคล้องกับสถานะที่ฉันได้ตั้งค่า - บริการไม่เริ่มและหยุดจริงหรือ ฟังและไม่แสดงในพอร์ตของพวกเขา

มีบางขั้นตอนที่ฉันหายไปไหม? สำหรับช่วงเวลาที่ฉันติดกับloadและunloadแต่ฉันต้องการที่จะเรียนรู้วิธีการไม่โต้ตอบกับสิ่งนี้ก่อนที่แอปเปิ้ลในที่สุดปิดประตูในทางเก่า / ไม่ดี ...


มรดกหมายความว่าการเปลี่ยนแปลงนั้นกำลังดำเนินอยู่ - คุณยังสามารถใช้การโหลดและการปลดปล่อยเนื้อหาหัวใจของคุณในวันที่ 10.11 และต่ำกว่า ข้อสันนิษฐานของฉันคือ Apple จะมีเอกสารที่ WWDC ในปีนี้และกำหนดเวลาสำหรับการย้ายถิ่น ...
bmike

1
ผมคิดว่ามีเพียงแค่อาจจะไม่ได้คำตอบนี้ แต่ก็แน่ใจว่ารูปลักษณ์ที่เหมือนenableและdisableมีความตั้งใจที่จะเข้ามาแทนที่และload unloadฉันไม่สามารถทำให้พวกเขาทำงานได้อย่างที่คาดหวัง
Glyph

1
คุณได้ลองติดตามlaunchctl enableด้วยlaunchctl kickstartหรือยัง

ฉันยังไม่ได้ แต่ไม่launchctl kickstartควรเพียงแค่เปิดใช้งานสำหรับงานที่เป็นปัญหา? ฉันใช้ launchd โดยเฉพาะเพราะฉันต้องการการเปิดใช้งานตามความต้องการอย่างแท้จริง
Glyph

2
ดูเหมือนว่าอาจช่วยได้: babodee.wordpress.com/2016/04/09/launchctl-2-0-syntax
TJ Luoma

คำตอบ:


6

ฉันถามผู้ใช้ Twitter @launchderp :

@launchderp launchctl loadและยกเลิกการโหลดยังคงปลอดภัยต่อการใช้งานอย่างน้อยจนถึง 10.12 หรืออะไรก็ตามที่เกิดขึ้นต่อไป

cf ฉันจะใช้คำสั่ง launchctl ที่ไม่ใช่ "ดั้งเดิม" เพื่อโหลดและยกเลิกการโหลดได้อย่างไร

และ@launchderp ตอบกลับ

@tjluoma ใช่พวกเขายังปลอดภัย มีการพึ่งพาหลายปีเกินไปที่จะทำลายมัน

แม้ว่านี่อาจดูเหมือนคำสั่งอย่างเป็นทางการของ Apple แต่ฉันเชื่อว่าบุคคลนี้จะเป็นคนที่ทำงานให้กับlaunchdApple และเชื่อใจในสิ่งที่พวกเขาพูด YMMV

คุณธรรมของเรื่องราว: หากการโหลด / การยกเลิกการโหลดทำงานให้คุณใช้มันต่อไป :-)


2
ไม่ทำเครื่องหมายว่า "ยอมรับ" เพราะไม่ได้ตอบคำถามเกี่ยวกับenableและยกระดับขึ้นdisableเพราะฉันยังคงชื่นชมข้อมูล :)
Glyph

1

บทความที่อ้างอิงโดย TJ Luoma มีประโยชน์มาก ขั้นตอนสำหรับ Launch Daemon:

  1. บันทึกไฟล์ plist ของคุณ/Library/LaunchDaemons/ตามปกติ สมมติว่าไฟล์นั้นcom.example.mysrv.plistและป้ายใน plist com.example.mysrvคือ
  2. sudo launchctl bootstrap system /Library/LaunchDaemons/com.example.mysrv.plist. โปรดทราบว่าเส้นทางสามารถเป็นญาติ (ถึง$PWD) หรือสัมบูรณ์
  3. sudo launchctl print system/com.example.mysrvตรวจสอบการให้บริการกับ มันควรจะพูดว่า "กำลังทำงาน"

ตัวแทนการเปิดตัวควรจะคล้ายกัน ข้อแม้: bootoutฉันมีความคิดวิธีการหยุดให้บริการโดยไม่ต้องขนถ่ายมันผ่าน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.