मैं नियत समय पर अपने मैक को जबरन कैसे बंद कर सकता हूं?


19

मैं एक ऑटो शटडाउन ऐप की तलाश कर रहा हूं जो एक नियत समय पर कंप्यूटर को जबरदस्ती बंद कर देगा।

इसका सबसे महत्वपूर्ण हिस्सा यह है कि शटडाउन को रद्द नहीं किया जाना चाहिए (जब तक कि यह प्रक्रिया अत्यंत महत्वपूर्ण न हो)।


"ऐप" से आपका क्या मतलब है? क्या इसे GUI प्रोग्राम होना चाहिए या लॉन्च किया जाना चाहिए (जो मैं नीचे सुझाव देता हूं) स्वीकार्य है? यदि आप एक GUI ऐप करते हैं, तो आप क्या करना चाहते हैं? उस समय के लिए प्रॉम्प्ट करें कि कंप्यूटर कब बंद होना चाहिए, कब चलाया जाए?
टीजे लुओमा

जवाबों:


25

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

यह जड़ के रूप में चलेगा और मजबूर हो जाएगा।

  • ओपन टर्मिनल (/ एप्लीकेशन / यूटिलिटीज / टर्मिनल)
  • इनपुट sudo crontab -e

आपको अपना लॉगिन पासवर्ड दर्ज करना होगा और फिर एंटर दबाना होगा।

अब आप एक पाठ संपादक (विम) में होंगे। निम्नलिखित कीस्ट्रोक्स पर सावधानीपूर्वक इनपुट करें।

  • iएक बार दबाएं (यह आपको पाठ दर्ज करने की अनुमति देगा)

मान लें कि आप चाहते हैं कि मशीन हर दिन 2 बजे बंद हो जाए, अब हम प्रवेश करेंगे:

* 2 * * * /sbin/shutdown -h now

यदि आप चाहते थे कि मशीन हर दिन 2:30 बजे बंद हो जाए, तो आप प्रवेश करेंगे:

30 2 * * * /sbin/shutdown -h now
  • जब आपने इसे टाइप किया है, तो दबाएं esc
  • फिर shift+ z shift+ दबाएं z(जो कि बदलावों को लिखने और संपादक को छोड़ने के लिए दो बार "z" है)

अब आपको उस कमांड लाइन पर वापस ले जाना चाहिए जहाँ आपने शुरुआत की थी।

हो गया!


क्या आपको sudoवहां डालने की जरूरत नहीं है ? मुझे पता है कि संभवत: यह लटका होगा, लेकिन मुझे पूरा यकीन है कि आपको दौड़ने के लिए रूट होना होगा shutdown
daviesgeek

किसी अपवाद की आवश्यकता नहीं है, यह एक अद्भुत जवाब है, काफी खुशी से आश्चर्यचकित है, खासकर जब मैंने आपकी बेरूखी का जवाब दिया। आपकी मदद के लिए बहुत बहुत धन्यवाद
हैरी

3
@daveisgeek - आप पूरी तरह से सही हैं, लेकिन ध्यान दें कि हम sudo के साथ crontab स्टार्टअप करते हैं। इसका मतलब है कि हम रूट के क्रैस्टैब को संपादित कर रहे हैं और इसलिए किसी भी अनुसूचित कमांड को उस उपयोगकर्ता के रूप में निष्पादित किया जाएगा।
macaco

अरे, मैंने ऐसा किया, और नियत समय पर मुझे एक संवाद मिला, जिसमें कहा गया था, यह कंप्यूटर 10 मिनट में बंद हो जाएगा? और यह मुझे रद्द करने के लिए कहता है। मुझे नहीं पता कि क्या यह क्रोन चीज़ या ऊर्जा सेवर चीज़ का परिणाम था जो मैंने भी किया था। क्या क्रोन चीज़ को बिना डायलॉग के बंद करने के लिए बाध्य किया जाना चाहिए?
हैरी

3
shutdownमें है /sbinजो शायद क्रॉन के डिफ़ॉल्ट $ पथ में नहीं है। ठीक करने के लिए, sudo crontab -eफिर से बात करें, ddलाइन को हटाने के लिए टाइप करें (यह मानते हुए कि फ़ाइल आपके ऊपर लिंक की गई तरह दिखती है) और लाइन को फिर से दर्ज करें 30 22 * * * /sbin/shutdown -h now
nohillside

13

हालांकि इसे रद्द किया जा सकता है:


इसमें रुकावट yymmddhhmm:

shutdown -h 1109211555

4 मिनट में रुकावट:

shutdown -h +4

/Library/LaunchAgents/me.lri.forceshutdown.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>me.lri.forceshutdown</string>
    <key>ProgramArguments</key>
    <array>
        <string>shutdown</string>
        <string>-h</string>
        <string>now</string>

    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>23</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>

यदि प्लिस्ट एक सामान्य उपयोगकर्ता के स्वामित्व में था, तो उसे लोड करने की कोशिश करने से त्रुटि उत्पन्न होगी launchctl: Dubious ownership on file (skipping):

sudo chown root /Library/LaunchAgents/me.lri.forceshutdown.plist

एजेंट को लॉग आउट करके वापस या उसके साथ लोड किया जा सकता है:

sudo launchctl load /Library/LaunchAgents/me.lri.forceshutdown.plist

sudo crontab -e

`08 16 * * * /sbin/shutdown -h now`

यह एक सामान्य गैर-मजबूर शट डाउन प्रदर्शन करेगा:

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

जब एक लॉन्च एजेंट को / Library / LaunchAgents / में शटडाउन कमांड जोड़ते हैं, तो यह काम नहीं करता और 'कंसोल' 'शटडाउन: लॉग नॉट सुपर-यूजर' होगा। शायद यह / System / Library / LaunchAgents में काम करता होगा (लेकिन आप वहां सामान नहीं रखने जा रहे हैं :-)) मुझे केवल एक सामान्य शटडाउन की आवश्यकता थी, इसलिए मैं ऑसस्क्रिप्ट के साथ गया, और इसे ~ / Library / LaunchAgents में डाल दिया। /bla.shutdown.plist। ठीक काम किया।
15

मुझे <code> osascript -e 'ऐप ऐप "फाइंडर" का उपयोग बंद करना था, हालांकि' </ code> हालांकि
commonpike

यह एकमात्र सही उत्तर है। (मेरी राय में)
कज़िन कोकीन

9

यह सिस्टम प्राथमिकता> ऊर्जा सेवर> अनुसूची में निर्धारित किया जा सकता है । मुझे यकीन नहीं है कि यह एक मजबूर शटडाउन शुरू करेगा, आपको इसे आज़माना होगा। लेकिन यह अनुसूचित बिजली को नीचे / ऊपर स्वचालित करने के लिए एक निर्मित विकल्प है।

  • आप टर्मिनल कमांड के साथ सिस्टम को जबरन बंद कर सकते हैं (रूट की आवश्यकता है):

    शटडाउन -एच अब

    आप उस कमांड को एक लॉन्चड या क्रोन शेड्यूल किए गए कार्य में डाल सकते हैं । की जाँच करें इस लेख उन दो सेवाओं पर ज्यादा जानकारी के लिए।

  • तुम भी जिसे उपयुक्त नाम पर रखा गया है जैसे एक आवेदन की जाँच कर सकते हैं iWannaSleep (नहीं यकीन है कि अगर यह बलों बंद)।


क्या...??? मैं एक ऐप ढूंढ रहा हूं।
हैरी

2
आप कम कृतघ्न दिखाई देना चाह सकते हैं, लेकिन यदि आप मेरे उत्तर को फिर से पढ़ते हैं, तो आप देखेंगे कि मैं एक ऐप सुझाता हूं और यदि आप थोड़ा स्वतंत्र शोध करते हैं, तो आप देखेंगे कि वास्तव में कुछ और अनुप्रयोग हैं जिनमें यह क्षमता है!
मकाको

iWannaSleep पहला परिणाम है जो लोग Google पर सुझाते हैं, और यह वह नहीं करता है जो मैं चाहता हूं। और आप मुझे कंप्यूटर बंद करने के लिए कुछ यूनिक्स चीज़ सीखने की सलाह दे रहे हैं?
हैरी

3
मैं इसे सुझाता हूं क्योंकि यह एक प्रभावी तरीका है जिसे आप उपकरण में निर्मित उपयोग करना चाहते हैं। यदि आप एक ऐसा एप्लिकेशन नहीं खोज पा रहे हैं जो आपकी आवश्यकताओं के अनुरूप हो तो आपको मेरे सुझाव की तर्ज पर कुछ देखने की आवश्यकता हो सकती है।
macaco

1
ऊर्जा सेवर »अनुसूची एक अच्छा जवाब नहीं है, क्योंकि यह उपयोगकर्ता को बंद करने से 10 मिनट पहले संकेत देगा और प्रक्रिया को रद्द करने की पेशकश करेगा।
टीजे लुओमा

3

आप shutdownभविष्य में किसी भी समय शटडाउन को शेड्यूल करने के लिए सीधे उपयोग कर सकते हैं:

shutdown -h time

जहां समय दो स्वरूपों में से एक में भविष्य के समय को निर्दिष्ट करता है: + संख्या, या यमद्वद्धम्, जहां वर्ष, महीना और दिन वर्तमान सिस्टम मानों के लिए डिफ़ॉल्ट हो सकते हैं। पहला फॉर्म सिस्टम को मिनटों में नीचे लाता है और दूसरा निरपेक्ष समय पर निर्दिष्ट करता है।


2
cd ~/Downloads/

curl --remote-name http://dl.dropbox.com/u/18414/ase/com.tjluoma.forceshutdown.plist

# नीचे दिए गए नोट देखें

sudo mv com.tjluoma.forceshutdown.plist /Library/LaunchAgents

sudo chown root:wheel /Library/LaunchAgents/com.tjluoma.forceshutdown.plist

sudo launchctl load /Library/LaunchAgents/com.tjluoma.forceshutdown.plist

ध्यान दें:

जैसा कि लिखा गया है, प्लिस्ट हर दिन 11pm (स्थानीय समय) पर कंप्यूटर को बंद कर देगा।

यदि आप समय बदलना चाहते हैं, तो किसी भी पाठ संपादक में स्क्रिप्ट को संपादित करें। घंटा और मिनट कुंजियाँ बदलें, यहाँ प्रस्तुत हैं:

<dict>
    <key>Hour</key>
    <integer>23</integer>
    <key>Minute</key>
    <integer>0</integer>
</dict>

(24 घंटे के समय पर ध्यान दें)


2

नीसर अनुसूचित शट डाउन

यदि आप अपने मैक को निर्धारित समय पर सुरक्षित रूप से बंद करना चाहते हैं , तो पावर मैनेजर पर विचार करें ; अनुप्रयोगों को प्रक्रिया को अवरुद्ध किए बिना इसे अच्छी तरह से बंद कर देता है:

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

इन चरणों को अवरुद्ध करने के लिए किसी दुष्ट अनुप्रयोग या प्रक्रिया के लिए बहुत मुश्किल है।

क्यों नहीं shutdown

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

अनुसूची सहायक

पावर मैनेजर में शेड्यूल असिस्टेंट टास्क को शेड्यूल में बंद करना शामिल है

पावर मैनेजर - दैनिक कार्य बंद

प्रकटीकरण: मैं उस कंपनी के साथ काम करता हूं जो पावर मैनेजर बनाती है।


0

मैं Apple के इस तकनीकी नोट पर एक नज़र डालूँगा


धन्यवाद, अब मैं क्या करूँ?
हैरी

आप SendAppleEventToSystemProcess (kAEShutDown) का उपयोग कर सकते हैं, फिर आप सभी एप्लिकेशनों को मारने के लिए कमांड किलॉल-यू उपयोगकर्ता नाम का उपयोग कर सकते हैं (चूंकि आप इसे रद्द नहीं करना चाहते हैं) आप टाइमर वर्ग की भी जांच करना चाहते हो सकते हैं: developer.apple.com/library/ mac / # दस्तावेज़ीकरण / कोको / संदर्भ /…
सामन्था कैटेनिया

1
महान लेख, लेकिन ओपी क्रोन या लॉन्च का उपयोग करने के बारे में बात कर रहा था, मुझे संदेह है कि वह इस समस्या का अपना समाधान कोड करने के लिए देख रहा है।
मकाको

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