LaunchAgent ปฏิเสธที่จะเริ่มต้นด้วยข้อผิดพลาด“ launch_msg (): ซ็อกเก็ตไม่ได้เชื่อมต่อ”


3

ฉันสร้างแพ็คเกจ pkg เพื่อสร้าง LaunchAgent เพื่อเริ่ม daemon และในไฟล์สคริปต์หลังการติดตั้งใช้วิธีนี้เพื่อเริ่ม daemon:

launchctl load -s /Library/LaunchAgent/file-name.plist

มันทำงานได้ดี

อย่างไรก็ตามมีปัญหา: ครั้งแรกที่ daemon เริ่มต้นในขณะที่ฆ่า daemon นี้และติดตั้ง LauchAgent อีกครั้งจะไม่สามารถเริ่มหรือฆ่า daemon ได้ มันจะพูดแบบนี้ใน terminal:

file-name.plist: Already loaded

หากฉันรีบูตหรือออกจากระบบก็สามารถเริ่มต้นได้อย่างถูกต้อง ฉันจะแก้ไขสิ่งนี้ได้อย่างไร


การแก้ไขไฟล์สคริปต์หลังการติดตั้งเป็น:

sudo -u $USER /bin/launchctl unload -S Aqua /Library/LauchAgent/file-name.plist
sudo -u $USER /bin/launchctl load -S Aqua /Library/LauchAgent/file-name.plist

ตามความคิดเห็นของ @ Daniel ได้แก้ไขปัญหาก่อนหน้านี้แล้ว ใช้งานได้ดีกับ Mac OS X 10.6 และ 10.7 แต่ใน 10.5, daemon ไม่สามารถเริ่มต้นด้วยวิธีนี้ ฉันลองไฟล์สคริปต์ในเทอร์มินัลหลังการติดตั้ง นี่คือข้อมูลบางส่วน:

launchctl:Error unloading: file-name.plist
launch_msg():Socket is not connected

launchctl unload?
Daniel Beck

1
โปรดพิจารณาการแก้ไขชื่อคำถามของคุณเพื่อสะท้อนการโฟกัสที่ดีขึ้นในปัจจุบันเช่นปัญหา“ launch_msg (): ซ็อกเก็ตไม่ได้เชื่อมต่อ”
kopischke

คำตอบ:


2

ปัญหาที่คุณพบเมื่อคุณพยายามโหลด LaunchAgent ในขณะที่ผู้ใช้มากกว่าหนึ่งรายเข้าสู่ระบบ (เช่นผ่านการสลับผู้ใช้อย่างเร็ว) ดูข้อความนี้ได้โดยควินน์“เอสกิโม” จากนักพัฒนาสัมพันธ์แอปเปิ้ลใน launchd รายการจดหมายและรายละเอียดเพิ่มเติมข้อความนี้ของเขาที่เก่า Nabble อ้างอิงถึงวิธีแก้ปัญหา (TL; DR: รีบูต)

หมายเหตุฉันไม่แน่ใจว่าปัญหานั้นมีเฉพาะในข้อ 10.5 - ฉันไม่สามารถค้นหาปัญหาเรดาร์ 5476420 ที่เชื่อมโยงโดย Quinn บนOpen Radarเพื่อยืนยันสถานะ


ขณะที่ฉันลบ "sudo -u $ USER" daemons เริ่มต้นเป็น root แต่ฉันต้องการให้มันทำงานในฐานะผู้ใช้ .. มีวิธีเดียวที่จะรีบูตเครื่องเพื่อแก้ไขหรือไม่
viwenver

ตามที่อธิบายโดยละเอียดโดย Quinn LaunchAgents ต้องทำงานในบริบท Mach ของผู้ใช้ปัจจุบัน อย่างน้อยบนเสือดาวพวกเขาไม่สามารถแนบกับบริบทเหล่านั้นสำหรับผู้ใช้ใด ๆ แต่คนที่ติดตั้งเอเจนต์ - ซึ่งหมายความว่าเมื่อมีผู้ใช้หลายคนเข้าสู่ระบบคุณจะต้องรีบูตเพื่ออัปเดต Agent สำหรับพวกเขาทั้งหมด
kopischke

0

เพื่อให้ทำงานใน 10.5 ให้ใช้suแทนsudo:

su "$USER" -c "/bin/launchctl unload -S Aqua /Library/LauchAgent/file-name.plist"
su "$USER" -c "/bin/launchctl load -S Aqua /Library/LauchAgent/file-name.plist"

ฉันไม่รู้ว่าทำไมพวกเขาถึงทำงานต่างกัน

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