विशिष्ट तिथि पर बंद


11

मुझे पता है कि आप एक विशिष्ट समय के लिए शटडाउन को शेड्यूल कर सकते हैं shutdown -h 21:45और इस तरह की चीजों के लिए उनके दोहराव वाले स्वभाव के कारण आपको क्रॉस्टैब का उपयोग नहीं करना चाहिए। मैं 31 अगस्त की तरह 20:00 बजे एक विशिष्ट तिथि के लिए शटडाउन कैसे कर सकता हूं ?

जवाबों:


7

हाल के उबंटू संस्करण सिस्टमड का उपयोग करते हैं और जब वन-ऑफ कमांड के लिए पारंपरिक atdऔर संबद्ध atशेड्यूलर स्थापित नहीं होता है या एक-ऑफ कमांडsystemd-run नहीं चल रहा है, जिसके साथ मैन्युअल रूप से उत्पन्न करने की तुलना में कुछ आसान हो सकता है systemd timer:

 systemd-run --on-calendar="2019-08-31 20:00:00 CET" /sbin/shutdown now

2
विडंबना यह है कि ऐसा करने के लिए एक पूरी सेवा शुरू करना लगभग शानदार है । सिस्टमड का शटडाउन तंत्र स्वयं समय में मनमाने बिंदुओं का समर्थन करता है। इसका कमांड-लाइन टूल बस इसे एक्सेस करने की क्षमता प्रदान नहीं करता है, क्योंकि यह बीएसडी की कमांड लाइन के बराबर नहीं है shutdown। जैसा कि मैंने एक अन्य उत्तर में लिखा है, आप चाहते हैं कि यह सिस्टम के लोगों को उनके shutdownउपकरण को और अधिक सक्षम बनाने के लिए मनाने की कोशिश कर सके , जिसमें दशकों के सिंटैक्स के साथ, घरों के आसपास जाने के बजाय systemd-run
जेडीबीपी

मुझे अमान्य कैलेंडर युक्ति मिलती है: 2019-08-31 20:00:00 CET
HdM अपलोड

12

atआदेश भावी निष्पादन बंद शेड्यूलिंग एक के लिए है।

जैसे

% at 8pm Aug 31
at> echo hello
at> <EOT>
job 161 at Sat Aug 31 20:00:00 2019

("<EOT>" नियंत्रण-डी दबाकर निर्मित किया गया था)

% atq
161     Sat Aug 31 20:00:00 2019 a sweh

आप shutdownयहां अपनी कमांड डाल सकते हैं।


हाँ! atजब मैंने पोस्ट किया था, तो मैं भूल गया था - atनिश्चित रूप से इसके लिए सामान्य रूप से है, हालांकि एक कंपनी में स्वीकृत पद्धति हो सकती है atया cron, कॉन्फ़िगरेशन प्रबंधन / तैनाती से संबंधित सम्मेलनों के आधार पर हो सकती है ।
flow2k

यह बिल्कुल समकक्ष नहीं है, ध्यान दें। unix.stackexchange.com/q/465322/5132
JdeBP

atएक पाइप से कमांड लेने में भी सक्षम है echo "echo yup > $(tty)" | at now:।
मॉस्विस

7

हालांकि atऐसा करने का स्पष्ट तरीका है, मुझे लगता है कि यह शटडाउन से बचेगा, इसलिए यदि मशीन अनुसूचित शटडाउन से पहले रिबूट करती है, तो यह निर्धारित समय पर फिर से बंद हो सकता है। इसलिए, बैश और जीएनयू तिथि का उपयोग करके हम एक देरी से बंद का उपयोग कर सकते हैं।

/sbin/shutdown +$(( ( $( date -d "30 may 2019 13:15" +%s ) - $( date +%s ) ) / 60 + 1 ))

NB: यह केवल एक मिनट के लिए सटीक है। यह यूनिक्स की अवधि के बाद से निर्धारित समय और अब सेकंड में परिवर्तित करके काम करता है, अंतर की गणना करता है, मिनट में परिवर्तित करता है, और फिर इसे बंद करने में देरी के रूप में उपयोग करता है। यदि पूर्व में निर्धारित समय है तो यह सही ढंग से काम नहीं करेगा।


3

आप एक बेहतर shutdownकमांड का उपयोग करें ।

वैन स्मुरेनबर्ग, अपस्टार्ट, और सिस्टमड shutdownकमांड एक तिथि विनिर्देशन की अनुमति नहीं देते हैं। लेकिन BSD shutdownकमांड फॉर्म में कब, कैसे बंद करना है, इसके स्पेसिफिकेशन में डेट वैल्यू लेता है yymmddhhmm। 4BSD के बाद से अब तक यही स्थिति रही है, और FreeBSD और OpenBSD के साथ ऐसा ही बना हुआ है। NetBSD ने इसे बढ़ाया ccyymmddhhmm

क्योंकि nosh टूलसेट BSD पर भी प्रयोग करने योग्य है, इसलिए मैंने अपनी shutdownकमांड को एक ही क्षमता प्रदान की, इसे CCYYMMDDHHMMNetBSD के अनुसार बढ़ा दिया । और क्योंकि nosh टूलसेट लिनक्स पर भी प्रयोग करने योग्य है, जो कि लिनक्स को एक शटडाउन कमांड देता है जो दिनांक लेता है।

यह निश्चित रूप से nosh के साथ काम करता है system-manager। यह कुछ अन्य प्रणालियों के साथ भी काम करता है। यह सामान को बनाने के लिए # 1 को संसाधित करने के लिए संकेत भेजता है और कुछ अन्य प्रणाली प्रबंधकों द्वारा समान संकेतों को समझा जाता है, जैसे कि systemd, इसका उपयोग करके भी बंद किया जा सकता है।

आप इसका उपयोग कर सकते हैं, या इसके जैसे एक उपकरण; या आप अन्य लिनक्स shutdownकार्यक्रमों के लेखकों को अपने उपकरण का विस्तार करने के लिए मनाने की कोशिश कर सकते हैं जो बीएसडी के रूप में भी सक्षम हो shutdown

आगे की पढाई

  • जोनाथन डी बॉयने पोलार्ड (2018)। shutdown। nosh टूलसेट मैनुअल पेज। सॉफ्टवेयर्स।
  • जोनाथन डी बॉयने पोलार्ड (2018)। system-manager। nosh टूलसेट मैनुअल पेज। सॉफ्टवेयर्स।
  • shutdownसिस्टम मैनेजर का मैनुअल । नेटबीएसडी मैनुअल पेज। 2011-11-04।
  • shutdownफ्रीबीएसडी सिस्टम मैनेजर्स मैनुअल । 2018/01/01।
  • shutdown। OpenBSD मैनुअल पेज। 2015-01-21।
  • /unix//a/465337/5132

1

इस वर्ष केवल नौकरी चलाने के लिए:

0 20 31 8 * test $(/bin/date +\%Y) = "2019" && /sbin/shutdown now

हर साल नौकरी चलाने के लिए:

0 20 31 8 * /sbin/shutdown now

-4

shutdownकमांड में वर्ष इनपुट करने का एक विकल्प हो सकता है , लेकिन क्रोन का उपयोग कमांड को समय पर केवल एक बार चलाने के लिए किया जा सकता है। अपने उदाहरण के लिए, प्रयास करें

0 0 31 8 ? 2019  shutdown

खबरदार: ऊपर मानक क्रोन सिंटैक्स नहीं है।


2
1. यह 20:00 अपराह्न नहीं कहता, यह मध्यरात्रि कहता है। 2. मैंने समय के लिए SIX फ़ील्ड के साथ क्रोनजोब कभी नहीं देखा है। आप किस क्रोन कार्यान्वयन को संदर्भित कर रहे हैं?
वाइल्डकार्ड

2
शेड्यूल yearमें कोई फ़ील्ड नहीं हैcrontab
सीमस

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