tl; डॉ: उपयोग OSX की मूल प्रक्रिया लांचर और प्रबंधक, launchd
।
ऐसा करने के लिए, एक launchctl
डेमॉन बनाओ । स्क्रिप्ट के सभी पहलुओं पर आपका पूरा नियंत्रण होगा। आप एक बार दौड़ सकते हैं या डेमॉन के रूप में जीवित रह सकते हैं। ज्यादातर मामलों में, यह जाने का तरीका है।
- यहां Apple Dev डॉक्स में दिए निर्देशों के
.plist
अनुसार एक फाइल बनाएं या नीचे अधिक विवरण दें।
- रखना
~/Library/LaunchAgents
- लॉग इन करें (या मैन्युअल रूप से चलाएं
launchctl load [filename.plist]
)
अधिक के लिए launchd
, विकिपीडिया लेख काफी अच्छा है और अन्य पुराने सिस्टम पर सिस्टम और इसके लाभों का वर्णन करता है।
यहां लॉगिन पर स्क्रिप्ट चलाने के लिए विशिष्ट प्लिस्ट फ़ाइल है ।
OSX El Capitan और नए ( जोस मेसियस जूनियर के लिए क्रेडिट ) के लिए 2017/09/25 अपडेट किया गया :
<?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.user.loginscript</string>
<key>ProgramArguments</key>
<array><string>/path/to/executable/script.sh</string></array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
<string>
अपने इच्छित कमांड के साथ प्रोग्राम कुंजी के बाद बदलें (ध्यान दें कि उस कमांड द्वारा संदर्भित किसी भी स्क्रिप्ट को निष्पादन योग्य होना चाहिए: chmod a+x /path/to/executable/script.sh
यह सुनिश्चित करने के लिए कि यह उनके उपयोगकर्ताओं के लिए है)।
के रूप रक्षित करें ~/Library/LaunchAgents/com.user.loginscript.plist
चलाने launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
और लॉग आउट करने के लिए / परीक्षण करने के लिए (या सीधे परीक्षण करने के लिए, भागो launchctl start com.user.loginscript
)
/var/log/system.log
त्रुटि संदेशों के लिए पूंछ ।
कुंजी यह है कि यह एक उपयोगकर्ता-विशिष्ट लॉन्च प्रविष्टि है, इसलिए इसे दिए गए उपयोगकर्ता के लिए लॉगिन पर चलाया जाएगा। सिस्टम-विशिष्ट लॉन्च डेमन (इन में रखा गया /Library/LaunchDaemons
) बूट पर चलाया जाता है।
यदि आप सभी उपयोगकर्ताओं के लिए लॉगिन पर एक स्क्रिप्ट चलाना चाहते हैं, तो मेरा मानना है कि LoginHook आपका एकमात्र विकल्प है, और शायद यही कारण है कि यह मौजूद है।