ฉันต้องการสคริปต์ (bash / zsh / ruby / ... ) เพื่อให้ทำงานในเวลาบูตใน OS X วิธีที่ง่ายที่สุดในการทำเช่นนี้คือโดยไม่ต้องยุ่งกับไฟล์ xml / plist และไม่จำเป็นต้องสร้างเมตา AppleScript .
ฉันต้องการสคริปต์ (bash / zsh / ruby / ... ) เพื่อให้ทำงานในเวลาบูตใน OS X วิธีที่ง่ายที่สุดในการทำเช่นนี้คือโดยไม่ต้องยุ่งกับไฟล์ xml / plist และไม่จำเป็นต้องสร้างเมตา AppleScript .
คำตอบ:
MacOS X ใช้ Vixie cron ซึ่งมีเมตาแท็กพิเศษสำหรับการเปิดตัวในเวลารีบูต ดูman pageสำหรับรูปแบบไฟล์
สิ่งที่ต้องการ:
@reboot /path/to/script.sh
ใน crontab ของคุณจะทำงาน ฉันไม่แน่ใจว่านี่เป็นทางออกที่ดีกว่า launchd คุณอาจมีเครื่องมือ meta ที่ดู launchd มากกว่า cron
ในกรณีที่คุณเปลี่ยนความคิดเห็นของคุณ:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.superuser.245713</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/script.sh</string>
</array>
<key>UserName</key>
<string>someuser</string>
</dict>
</plist>
จัดเก็บcom.superuser.245713.plist
ใน/Library/LaunchAgents/
และทำให้root:wheel
เจ้าของ / กลุ่ม
/Library/LaunchAgents
มากกว่า/System/Library/LaunchDaemons
เนื่องจาก/System
เป็นสิ่งที่ OS เฉพาะและเป็นหนึ่งภายใต้การ/Library
ถูกนำมาใช้มากขึ้นสำหรับสิ่งที่บุคคลที่สาม นอกจากนี้LaunchDaemons
"ควรมีรายการที่จะเรียกใช้ในฐานะรูทโดยทั่วไปกระบวนการพื้นหลัง" โดยที่LaunchAgents
"ทำงานเป็นผู้ใช้หรือในบริบทของ userland" แหล่งอ้างอิงสำหรับคำพูดเหล่านั้นเป็นบทความที่ยอดเยี่ยมเกี่ยวกับ launchdที่ฉันปรึกษาสำหรับคำถามเกี่ยวกับ launchd
นอกจากนี้ยังมีLogin Hooksหากคุณต้องการให้สคริปต์รัน (เป็น root) เมื่อผู้ใช้ลงชื่อเข้าใช้แทนที่จะบูตเครื่อง
cron
ใน OS X นั้นไม่ค่อยดีเท่าไหร่กับการบันทึกโดยค่าเริ่มต้น