टर्मिनल कमांड को शटडाउन, रिस्टार्ट और स्लीप माई मैक का उपयोग करना?


119

मैं अपने मैक पर समाधान को संबोधित करने के लिए वैकल्पिक तरीके के रूप में टर्मिनल का उपयोग करने में अधिक दिलचस्पी ले रहा हूं। मैंने इस सवाल को देखा है "क्या OSX को बंद / पुनः आरंभ करने का एक बेहतर तरीका है?"

इसलिए मैं जानना चाहूंगा:

विशेष रूप से टर्मिनल कमांड का उपयोग करके अपने मैक को कैसे बंद करें, पुनरारंभ करें और सो जाएं?


रिस्टार्ट के लिए रिबूट भी काम करता है।
atilkan

जवाबों:


145

आपके द्वारा आदेश के बाद शटडाउन है । यह सभी उपयोगकर्ताओं को सूचित करता है कि मशीन बंद हो रही है और सभी ऐप्स को फ़ाइलें बंद करने आदि के लिए कहता है।

कमांड एक पैरामीटर -h, -r या -s को मैक को फिर से बंद करने, पुनरारंभ करने या सोने के लिए लेता है।

कमांड को रूट के रूप में चलाना होगा ताकि आपको sudo का उपयोग करने की आवश्यकता हो।

तुरंत मशीन को रिबूट करने के लिए

sudo shutdown -r now

जैसे मशीन को 60 मिनट में बंद करना

sudo shutdown -h +60

टिप्पणियों से दो चीजों पर ध्यान दिया जाना है

शटडाउन कैसे काम करता है सभी प्रक्रियाओं के लिए एक सिग्मेंट भेजना चाहिए जो कि तब से निपटना चाहिए जैसे कि खुली फ़ाइलों को बचाएं आदि। यदि वे बाहर नहीं निकलते हैं, तो उन्हें एक साइकिले भेजा जाएगा जो उन्हें जवाब देने का कोई मौका नहीं देने के लिए मरने के लिए मजबूर करता है। संकेतों को सामान्य कुंजी संदेश कतार के माध्यम से नहीं भेजा जाता है, इसलिए एप्स को इसके लिए अलग से उस कोड से निपटना पड़ता है जिसे मेनू पर छोड़ दिया जाता है। एक अच्छे ऐप को दोनों से कॉमन कोड को कॉल करना चाहिए।

यह अन्य उत्तर दिखाता है कि कैसे बंद करें जैसे कि आप मेनू विकल्पों को मारते हैं। लेकिन ध्यान दें कि ऐप्स इस शटडाउन को रद्द कर सकते हैं


2
शायद सवाल और इस जवाब के लिए थोड़ा असंबंधित है, लेकिन इसके लायक क्या है इसके लिए भी मेरे मैक को टर्मिनल से लॉक करने के लिए काम आता है, जिस तरह से विंडोज में विंकी + एल मारने की तरह है /System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend:। मैंने इसे एक फ़ाइल में alias lock='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'
अलियास

क्या यह वास्तव में "सभी ऐप्स को फ़ाइलें बंद करने आदि के लिए कहता है"? मैंने सोचा कि यह सिर्फ सब कुछ मार डाला? मैन पेज 1998 से है BSD - क्या Apple ने macOS सॉफ्टवेयर पर अच्छी बात करने के लिए कमांड को अपडेट किया है? उपयोगी है अगर चीजें लटका दी गई हैं, लेकिन अगर सिस्टम अच्छी तरह से काम कर रहा है, तो ऐसा लगता है कि लॉग इन करने के लिए लॉगिनविंडो प्रक्रिया को बताने से अधिक "विनम्र" होगा।
j-beda

@ j-beda देखें Apple doc developer.apple.com/legacy/library/documentation/Darwin/… - यह सबसे पहले एक SIGTERM भेजता है, जो ऐप्स को एक SIGKILL प्राप्त करने से पहले सौदा करना चाहिए। लॉगिन विंडो / GUI के माध्यम से करने के लिए अन्य उत्तर देखें। वास्तव में लॉगिनविंडो डीड कैसे करेगा?
मार्क

मुझे पूरा यकीन है कि यूनिक्स "शटडाउन" वह सभी सामान नहीं करता है जो नियमित मैक जीयूआई शटडाउन प्रक्रिया करता है, इस प्रकार, इस हद तक कि ऐप्पल सीधे अपने सॉफ़्टवेयर में इसका उपयोग नहीं करता है, लेकिन कम से कम कुछ करने से पहले कुछ सामान करता है। यह, सीधे इसे लागू करने के लिए कुछ नकारात्मक पहलू है। मेरा मानना ​​है कि "लॉगिनविंडो" ऐप जीयूआई लॉगिन विंडो पर नहीं होने पर भी उपलब्ध है, और कमांड लाइन "ऑसस्क्रिप्ट" टूल के माध्यम से इसे लागू किया जा सकता है। हालांकि यह अचूक नहीं है, इसलिए किसी को भी किसी भी तरह "शटडाउन" को आमंत्रित करने की आवश्यकता हो सकती है (या मैं जो विशिष्ट प्रक्रियाओं को दबाता हूं, उन्हें अलग-अलग मारता हूं)।
जे-बेडा

सिग्नल तंत्र सामान्य संदेश के रूप में एप्स संदेश कतार पर संदेश नहीं डालता है, लेकिन एप्स को अभी भी इससे निपटना चाहिए। यानी अगर यह ठीक से काम नहीं करता है तो यह एप्स की गलती है। जीयूआई में कुछ प्रयास के लिए अन्य उत्तर देखें। लेकिन मुझे पता है कि अक्सर एक ऐसा ऐप होता है जो मरने से मना कर देता है और छोड़ने की प्रक्रिया को रद्द कर देता है इसलिए शटडाउन एकमात्र तरीका है
मार्क

94

पुष्टि डायलॉग दिखाए बिना शट डाउन करें:

osascript -e 'tell app "System Events" to shut down'

पुष्टि डायलॉग दिखाने के बाद शट डाउन करें:

osascript -e 'tell app "loginwindow" to «event aevtrsdn»'

पुष्टिकरण संवाद दिखाए बिना पुन: प्रारंभ करें:

osascript -e 'tell app "System Events" to restart'

पुष्टिकरण संवाद दिखाने के बाद पुनः प्रारंभ करें:

osascript -e 'tell app "loginwindow" to «event aevtrrst»'

पुष्टिकरण संवाद दिखाए बिना लॉग आउट करें:

osascript -e 'tell app "System Events" to  «event aevtrlgo»'

पुष्टिकरण संवाद दिखाने के बाद लॉग आउट करें:

osascript -e 'tell app "System Events" to log out'

सो जाओ ( pmset):

pmset sleepnow

सो जाओ (AppleScript):

osascript -e 'tell app "System Events" to sleep'

सोने के लिए डिस्प्ले लगाएं (10.9 और बाद में):

pmset displaysleepnow

Apple घटनाओं के लिए चार अक्षर कोड में सूचीबद्ध हैं AERegistry.h

ऊपर दिए गए सभी सिस्टम ईवेंट, Apple ईवेंट को loginwindowप्रक्रिया में भेजते हैं। loginwindowजब आप लॉग आउट करते हैं, पुनरारंभ करते हैं, शट डाउन करते हैं, या मैक को सामान्य रूप से सोने के लिए डालते हैं तो वही Apple ईवेंट ऊपर भेजा जाता है। तकनीकी क्यू एंड ए QA1134 देखें : प्रोग्रामेटिक रूप से पुनः आरंभ, शटडाउन और / या लॉगआउट के कारण

के अनुसार man shutdown, shutdown -h nowऔर shutdown -r nowप्रक्रियाओं को एक TERMसंकेत के बाद एक संकेत भेजते हैं KILL

के अनुसार डेमॉन और सेवाओं गाइड प्रोग्रामिंग , जब आपको बता loginwindowलॉग आउट करने, प्रक्रियाओं है कि अचानक समाप्ति का समर्थन एक भेजा जाता है KILLसंकेत है, और प्रक्रियाओं है कि अचानक समाप्ति का समर्थन नहीं करते अलग अलग तरीकों से समाप्त कर दिया जाता: कोको आवेदन प्राप्त applicationShouldTerminate:प्रतिनिधि विधि, अग्रभूमि ऐप्लिकेशन kAEQuitApplicationApple ईवेंट प्राप्त करें , पृष्ठभूमि एप्लिकेशन kAEQuitApplicationएक KILLसिग्नल के बाद Apple ईवेंट प्राप्त करते हैं , और डेमॉन कुछ सेकंड के बाद सिग्नल के TERMद्वारा सिग्नल प्राप्त करते हैं KILL


-4

शटडाउन तुरंत:

**sudo shutdown -h now**

यदि आपको शटडाउन में देरी करने का मन करता है, तो आप इसके बजाय निम्नलिखित कमांड सिंटैक्स का उपयोग कर सकते हैं:

**sudo shutdown -h +30**

(-ह पैरामीटर बंद करने के लिए समय निर्धारित किया गया है, जहां (+) सिस्टम बंद करने के लिए 30 मिनट)


2
आपके उत्तर में प्रस्तुत जानकारी पहले से ही स्वीकृत उत्तर में शामिल है, और जैसे कि पहले से ही उल्लेखित और स्वीकार किए गए को दोहराने की आवश्यकता नहीं है।
user3439894

-11

टर्मिनल कमांड लाइन प्रॉम्प्ट से लॉगआउट करने के लिए भी उपयोगी, 'बाहर निकलें' टाइप करें:

[host:~user]$ exit

10
किस तरीके से यह शट डाउन होता है, मैक को पुनरारंभ या सोता है?
bmike

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