मैक ओएस एक्स को बंद करने से पहले मैं एक प्रोग्राम कैसे चला सकता हूं?


9

मैं अपने सभी वर्चुअलबॉक्स वीएम को बचाने के लिए मैक ओएस एक्स प्राप्त करने की कोशिश कर रहा हूं जब यह रिबूट होता है। मेरे पास पहले से ही एक स्क्रिप्ट है जो ऐसा करती है, लेकिन मुझे रिबूट से पहले इस स्क्रिप्ट को स्वचालित रूप से चलाने के लिए ओएस एक्स की आवश्यकता है।

जब मैक ओएस एक्स रिबूट होता है, तो क्या यह / sbin / रिबूट चलता है?

या इसे और कैसे हासिल किया जा सकता है?


यहाँ डुप्लिकेट प्रश्न: apple.stackexchange.com/questions/16825/…
michaelmichael

वह डुप्लिकेट नहीं है। मैं यह नहीं जानना चाहता कि लॉग आउट करते समय स्क्रिप्ट या प्रोग्राम कैसे चलाना है। मैं जानना चाहता हूं कि शट डाउन करते समय स्क्रिप्ट या प्रोग्राम कैसे चलाना है।
एंड्रयू जे। ब्राम

1
आप सही हे। एक सटीक डुप्लिकेट नहीं। लिंक किए गए प्रश्न का उत्तर उपयोगकर्ता को /etc/rc.shutdown.localशट डाउन करते समय इसे चलाने के लिए अपनी स्क्रिप्ट को रखने की सलाह देता है । ऐसा लगता है कि आप क्या देख रहे हैं।
michaelmichael

यह साइट उस दावे का दावा करती है: hints.macworld.com/article.php?story=20051013141919568
एंड्रयू जे।

Rc.shutdown.local विधि काम नहीं करती है।
एंड्रयू जे। ब्रिअम जूल

जवाबों:


5

यद्यपि Apple " लॉन्च " का उपयोग करने की सलाह देता है , सबसे आसान है शेल का उपयोग करके स्क्रिप्ट बनाना, उदाहरण के लिए, टर्मिनल का पिको:

pico /Users/Shared/logoutHook.sh

फ़ाइल में कुछ इस तरह हो सकता है:

#!/bin/bash
say 'Hasta la vista baby!'

फिर निष्पादन अधिकार दें:

sudo chmod +x /Users/Shared/logoutHook.sh

अंत में, स्क्रिप्ट को लॉगआउट प्रक्रिया में हुक करें:

sudo defaults write com.apple.loginwindow LogoutHook /Users/Shared/logoutHook.sh

यदि आप एक और आवेदन शुरू करते हैं, जैसा कि मैंने इसका परीक्षण नहीं किया है, तो मुझे लगता है कि यह खुद को और आपको चेतावनी देने के लिए उपयोगी हो सकता है:

  • हम जो चाहते हैं उसे निष्पादित करने के लिए शटडाउन सिग्नल को मारने की आवश्यकता हो सकती है;

  • फिर एक नया संदेश भेजें (हमारी
    लिपि द्वारा भेजे गए संकेत को मारने के लिए नहीं )


यदि आप हुक हटाना चाहते हैं:

sudo defaults delete com.apple.loginwindow LogoutHook

यदि " लॉन्च " का उपयोग किया जाता है , तो विचार SIGTERM सिग्नल को पकड़ने के लिए होगा। पर एक नज़र डालें: /System/Library/LaunchDaemons/com.apple.shutdown_monitor.plist


4

लॉन्चड ने सभी स्क्रिप्ट / डेमॉन को शटडाउन की एक प्रारंभिक चेतावनी भेजी है जिसमें एक स्टॉप सर्विस () सबरूटीन है । यह आपकी प्रक्रिया को साफ करने के लिए सबसे अधिक समय देता है।

स्क्रिप्ट शुरू करने के लिए बस लॉन्च का उपयोग करें और इसे पृष्ठभूमि में चलाएं जब तक कि बाहर निकलने का समय न हो।

जिन सेवाओं को शुरुआती चेतावनी मिली थी, वे बंद हो रही हैं, सभी प्रक्रियाओं में उन्हें nukes SIGTERMसे कुछ सेकंड पहले संकेत मिलता है SIGKILL

आप एक स्क्रिप्ट बना सकते हैं जो उस समय आने पर आपकी कमांड को चलाने के लिए SIGTERM को सोता है और फंसाता है। आपको यह देखना होगा कि क्या यह अभ्यास को आज्ञा देने के लिए पर्याप्त समय देता है। यह थोड़ी सी कोडिंग से बचा जाता है, लेकिन ज्यादा नहीं - यह आमतौर पर शेल स्क्रिप्ट से केवल डेमॉन बनाने के लिए बेहतर है।


एक ऐतिहासिक दृष्टिकोण से - /sbin/rebootऔर रनवेल्स कभी भी डार्विन / ओएस एक्स पर मौजूद नहीं थे और अब rc.shutdownके बाकी हिस्सों के साथ-साथ मालिक हैं। आप बाघ पर या उससे पहले rc.shutdown का उपयोग करने में सक्षम हो सकते हैं (मेरे पास वर्तमान में जांचने के लिए उन चित्रों में से एक नहीं है) शेर ने निश्चित रूप से rc.d और init.d. के सभी अवशेषों को हटा दिया है।rclaunchd

आप यह देखना चाहते हैं कि क्या स्लीपवॉचर आपके मामले में मदद करेगा। मैंने काफी समय में इसका उपयोग नहीं किया है - लेकिन यह निश्चित रूप से आपकी दुविधा को हल करने का लक्ष्य रखता है।


"पदावनत" का अर्थ है "काम नहीं करता है"। :-(
एंड्रयू जे। ब्रेज़्म

युप - चेतावनी टाइगर पर शुरू हुई और मुझे लगता है कि यह तेंदुए के साथ चला गया - यह आपके मस्तिष्क के चारों ओर चल रहे सभी शेर परिवर्तनों के साथ याद करना मुश्किल है।
bmike

यह वास्तव में मामलों को जटिल करता है और मैक ओएस एक्स को बहुत खराब सर्वर प्लेटफॉर्म बनाता है।
एंड्रयू जे। ब्रेअम

लॉन्चड स्क्रिप्ट को शटडाउन पर चलाने में पूरी तरह सक्षम है। शायद मुझे इतिहास को संपादित करना चाहिए और उस तथ्य को और स्पष्ट करना चाहिए। किस तरह से लॉन्चिंग आपकी स्क्रिप्ट को शटडाउन पर चलाने की आवश्यकता को विफल करता है?
bmike

मुझे पता नहीं है कि शटडाउन पर लॉन्च रन स्क्रिप्ट कैसे बनाते हैं। मैं बूट पर चीजों को शुरू करने के लिए लॉन्चड का उपयोग करता हूं।
एंड्रयू जे। ब्रेअम जूल 27'11
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.