जवाबों:
at 18:00 shutdown nowएक "एट" नौकरी बनाता है, जो आपके सिस्टम के आधार पर atडेमन या शायद डेमॉन द्वारा निर्दिष्ट समय पर किया जाता cronहै।
shutdown 18:00आपके शेल में एक प्रक्रिया शुरू करता है जो निर्दिष्ट समय तक इंतजार करता है और फिर शटडाउन करता है। यदि आपका शेल सत्र समाप्त हो जाता है तो यह आदेश समाप्त किया जा सकता है।
अधिकांश मामलों में शुद्ध परिणाम समान होगा: सिस्टम 18:00 पर बंद होता है।
एक अंतर यह है कि यदि आप उपयोग करते हैं at, तो नौकरी को संग्रहीत किया जाएगा और अगर 18:00 से पहले सिस्टम को किसी अन्य माध्यम से बंद किया जाता है, तो फिर से बूट करने पर भी नौकरी के चलने का इंतजार रहेगा; यदि समय पहले ही बीत चुका है, तो शटडाउन तुरंत किया जाएगा जो काफी अप्रत्याशित हो सकता है।
एक और अंतर यह है कि उस समय के बाद लोगों को लॉग इन करने से रोकने के लिए निर्धारित समय से 5 मिनट पहले shutdown 18:00एक /run/nologinफ़ाइल बनाई जाएगी । साथ ही उपयोगकर्ताओं को लॉग इन चेतावनी के लिए प्रसारण संदेश भेजे जाएंगे कि सिस्टम बंद होने वाला है।
आपको यह तय करने के लिए इन अंतरों को ध्यान में रखना होगा कि किसका उपयोग करना है।
nohupया disownया जो कुछ भी है, अगर सामान्य रूप से लॉग आउट होने मारता चल पृष्ठभूमि प्रक्रियाओं। विभिन्न प्रणालियों के लिए अलग-अलग डिफॉल्ट हो सकते हैं। (मैं मान रहा हूं कि वास्तव में sudo shutdownअभी भी एक प्रक्रिया चल रही है, बल्कि यह केवल initशटडाउन टाइमर शुरू करने के लिए संकेत दे रहा है। बाद वाला वास्तव में वही हो सकता है, लेकिन मैंने हाल ही में चेक नहीं किया है। ओह, लेकिन @JdeBP के पास इसका जवाब है। )
atइसलिए इसके cronबजाय इसके माध्यम से काम करना है atd?
यदि आपके पास CentOS 7 है, तो आपके पास एक ऑपरेटिंग सिस्टम है और उत्तर अलग है।
at 18:00 shutdown nowअभी भी atसबसिस्टम के माध्यम से शेड्यूल करता है , लेकिन यह shutdownकमांड, साथ ही साथ जो आप सीधे इनवॉइस करते हैं shutdown 18:00, वह अलग है। यह वास्तव में सिस्टमड systemctlप्रोग्राम है। systemctlचीजों को अलग तरह से करता है।
सबसे पहले, systemctlअनुसूचित शटडाउन अनुरोध भेजता है एक मामले से संसाधित होने के लिए, atमामले में बहुत पसंद है । यह एक प्रणालीगत सामंजस्य है, हालांकि, विशेष रूप से logind( systemd-shutdowndमई 2015 में प्रणाली से निकाले गए d beenmon, जो परिवर्तन के बाद से CentOS 7 के बाद के मामूली संस्करणों के माध्यम से समाप्त हो गया है), atउपतंत्र नहीं । systemctl(सिस्टम-वाइड) डेस्कटॉप बस ब्रोकर को एक आंतरिक प्रोटोकॉल बोलता है, जिसके साथ संचार होता है logind।
तो, atमामले की तरह , वहाँ कोई shutdownप्रक्रिया नहीं है वहाँ बैठकर गिनती और wallसंदेशों को जन्म देता है । तो कोई लॉग आउट कर सकता है और यह शेड्यूल को प्रभावित नहीं करेगा, और रद्द करना उतना सरल नहीं है जितना कि लॉगिन सत्र की अग्रभूमि प्रक्रिया को बाधित / मारना। जैसे के साथ at।
वहाँ अभी भी संदेशों में विपरीत, atमामला है, लेकिन वे द्वारा जारी किए जाते हैं logind। atमामले के विपरीत , अनुसूचित नौकरी पूरे सिस्टम रीस्टार्ट में नहीं रहती है, इसलिए एक वास्तविक शटडाउन एक अनुसूचित रद्द कर देता है। वहाँ है फाइल सिस्टम में एक फ़ाइल है, लेकिन यह किया जा रहा है /run/systemd/shutdownजो गैर लगातार भंडारण है।
आगे अंतर यह है कि एक समय में केवल एक अनुसूचित शटडाउन हो सकता है, जबकि एक कई atनौकरियों को प्रस्तुत कर सकता है , और पॉलिसी किट shutdownगैर-लॉगिन-सत्र संदर्भ में एक atनौकरी के रूप में चलाने के लिए नियम लागू करेगी जो कि shutdownचलाने के लिए लागू नियमों से भिन्न हैं लॉगिन सत्र संदर्भ। बाद वाला अधिक अनुज्ञेय हो सकता है, जो सिस्टम को बंद करने के लिए सक्रिय लॉगिन सत्र में लॉग इन करने वाले एक अनपेक्षित उपयोगकर्ता को अनुमति देता है (कह सकता है) ।
shutdown 18:00आपके शेल में एक प्रक्रिया शुरू होती है जो इंतजार करती है"। यदि आप उससे पहले लॉग आउट करते हैं तो क्या होगा?