OS X में स्क्रिप्ट को बूट समय पर चलाने का सबसे आसान तरीका क्या है?


12

मैं एक स्क्रिप्ट (बैश / zsh / रूबी / ...) को OS X में बूट समय पर चलाना चाहता हूं। ऐसा करने का सबसे सरल तरीका है, बिना xml / plist फाइलों के साथ मैसेज किए, और अधिमानतः एक मेटाफ़ॉर्म AppleScript बनाने की ज़रूरत नहीं है ।

जवाबों:


7

मैकओएस एक्स विक्सी क्रोन का उपयोग करता है, जिसमें रीबूट समय पर लॉन्च करने के लिए विशेष मेटा टैग हैं। फ़ाइल स्वरूप के लिए मैन पेज देखें ।

कुछ इस तरह:

@reboot /path/to/script.sh

आपके क्रेटाब में काम करेगा। मुझे यकीन नहीं है कि यह लॉन्च से बेहतर समाधान है, आपके पास संभवतः अधिक मेटा टूल हैं जो क्रोन की तुलना में लॉन्च को देखते हैं।


इसे प्यार करो, आपने मुझे गलत साबित कर दिया :-) हालाँकि cronOS X डिफ़ॉल्ट रूप से लॉगिंग के साथ बहुत अच्छा नहीं है (कुछ दिनों पहले इस पर एक विषय था)।
डैनियल बेक

यह पूर्ण है।
जॉन बाचिर

1
ध्यान दें कि क्रोन, एट, और इसी तरह कुछ हद तक ओएस एक्स में पदावनत हैं। मुझे विभिन्न डॉक्स में इसका स्पष्ट विवरण नहीं मिल सकता है, और न ही मुझे पता है कि वे कितने आक्रामक रूप से पदावनत हैं, लेकिन लॉन्चड आम तौर पर पसंदीदा लगता है। एक परिचय के लिए लॉन्च दस्तावेज देखें ।
नॉर्मन ग्रे

मेरे लिए काम नहीं करेगा - यह एक आकर्षण की तरह काम करता है - धन्यवाद! :
बीजी ब्रूनो

ईमानदारी से यह निश्चित नहीं था कि अगर सिंटैक्स OS X पर समान होगा।
NobleUplift

6

यदि आप अपनी राय बदल देते हैं:

<?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मालिक / समूह।


1
यह इसे में डाल करने के लिए यकीनन बेहतर है /Library/LaunchAgentsबजाय /System/Library/LaunchDaemonsके बाद से /Systemओएस विशिष्ट सामान है और एक के तहत /Libraryतीसरे पक्ष के सामान के लिए अधिक प्रयोग किया जाता है। इसके अलावा, LaunchDaemons"उन वस्तुओं को शामिल करना चाहिए जो रूट के रूप में चलेंगे, आम तौर पर पृष्ठभूमि प्रक्रियाएं" जहां LaunchAgents"उपयोगकर्ता के रूप में या उपयोगकर्ता के संदर्भ में चलती हैं"। उन उद्धरणों के लिए स्रोत लॉन्च पर एक शानदार लेख है जो मैं लॉन्च किए गए सवालों के लिए परामर्श करता हूं।
डॉग हैरिस

@DougHarris सुझाव के लिए धन्यवाद! मुझे मानना ​​होगा कि मैं सिर्फ इस तदर्थ को टाइप कर रहा था - जब मैं आमतौर पर अपने समाधान का परीक्षण करता हूं, तो मैं इसके लिए अपनी मशीन को पुनरारंभ करने के लिए तैयार नहीं था।
डैनियल बेक

यह बहुत अच्छा है, हालांकि मुझे विक्सी क्रोन समाधान बेहतर पसंद है :)
जॉन बाचिर

दरअसल, इसे / लाइब्रेरी / लॉन्चडैमन्स में डाला जाना चाहिए। एजेंट केवल एक उपयोगकर्ता सत्र के अंदर ही दौड़ते हैं, अर्थात जब तक कोई व्यक्ति लॉग इन नहीं करेगा, तब तक वे (या अधिक सटीक रूप से, चलाने के योग्य बनेंगे) तब तक चलेंगे, जब तक कोई व्यक्ति लॉग इन नहीं करेगा, और हमेशा चलेगा और वर्तमान में उपयोगकर्ता के रूप में लॉग इन करेगा। डेमॉन बूट में (/ चलाने के योग्य हो जाते हैं), और जब वे आम तौर पर रूट के रूप में चलते हैं, तो UserName कुंजी के साथ कुछ अन्य उपयोगकर्ता के रूप में चलाया जा सकता है।
गॉर्डन डेविसन 4


2

यदि आप मशीन को बूट करने के बजाए उपयोगकर्ता से लॉग इन करते हैं, तो आप लॉगिन हुक भी चला सकते हैं यदि आप स्क्रिप्ट को रूट करना चाहते हैं (रूट के रूप में)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.