यदि सिस्टम अभी तक समाप्त नहीं हुआ है तो क्या सिस्टम टाइमर सिस्टम अगले रन को छोड़ देता है?


18

मैं हर 5 मिनट में कमांड चलाने के लिए systemd का उपयोग करना चाहता हूं। हालांकि, एक जोखिम है कि कभी-कभी कार्य को चलाने में 5 मिनट से अधिक समय लग सकता है। उस बिंदु पर, क्या systemd कमांड का दूसरा उदाहरण शुरू करेगा अर्थात क्या मैं 2 प्रक्रियाओं के साथ समाप्त हो जाऊंगा?

क्या यह बताना संभव है कि अगर पहला काम पूरा नहीं हुआ है तो दूसरी प्रक्रिया शुरू न करें? यदि नहीं, तो कुछ अच्छे वर्कअराउंड क्या हैं?

नोट: मुझे आशा है कि उत्तर "यह डिफ़ॉल्ट व्यवहार है। यह सिर्फ दस्तावेज नहीं है।" यदि यह स्थिति है, तो क्या कोई मुझे बता सकता है कि उनके डॉक्स के खिलाफ बग कैसे दर्ज किया जाए?

नोट: क्रोन में एक समान मुद्दा है जो /unix//a/173928/11244 में चर्चा की गई है । मैं सिस्टमड समकक्ष के लिए देख रहा हूँ।

जवाबों:


27

यह डिफ़ॉल्ट (और एकमात्र) व्यवहार है। यह स्पष्ट रूप से प्रलेखित नहीं है, लेकिन सिस्टमड के ऑपरेशन लॉजिक द्वारा निहित है।

systemd.timer (5) पढ़ता है:

प्रत्येक टाइमर फ़ाइल के लिए, एक मिलान इकाई फ़ाइल मौजूद होनी चाहिए, जब टाइमर के समाप्त होने पर सक्रिय होने के लिए इकाई का वर्णन करना ।

systemd (1) , बदले में, इकाई अवस्थाओं और उनके बीच के बदलावों की अवधारणा का वर्णन करता है:

इकाइयाँ "सक्रिय" (मतलब शुरू, बाउंड, प्लग इन, ..., यूनिट प्रकार के आधार पर, नीचे देखें), या "निष्क्रिय" (मतलब रुका हुआ, अनबाउंड, अनप्लग्ड, ...) हो सकता है, साथ ही साथ सक्रिय होने या निष्क्रिय होने की प्रक्रिया , यानी दोनों राज्यों के बीच (इन राज्यों को "सक्रिय करना", "निष्क्रिय करना") कहा जाता है।

इसका मतलब यह है कि टाइमर के चालू होने से मिलान इकाई की "सक्रियता" होती है, अर्थात "सक्रिय" स्थिति में इसका संक्रमण होता है।

यदि मिलान इकाई "सक्रियण" (सेवा इकाई के लिए) के समय पहले से ही "सक्रिय" है, तो इसका मतलब है कि "मुख्य प्रक्रिया अभी भी चल रही है", जब तक कि सेवा इकाई नहीं है Type=oneshotऔर RemainAfterExit=true), यह स्पष्ट होना चाहिए कि कोई कार्रवाई नहीं होगी लिया।


आप "oneshot" -services स्पष्ट कर सकते हैं? मेरे विचार में "oneshot" -service को किसी भी परिस्थिति में दूसरी कॉपी नहीं चलानी चाहिए (मैनपेज: सिस्टम को फॉलो-अप यूनिट शुरू करने से पहले प्रक्रिया से बाहर निकलना होगा)
Gima

1
@Gima बिना किसी अतिरिक्त पैरामीटर के एक ऑनशॉट यूनिट को "सक्रिय" माना जाता है जबकि इसकी प्रारंभिक प्रक्रिया चल रही है, और जब यह बाहर निकलती है तो "निष्क्रिय" हो जाती है। इस समय, एक और ट्रिगर उस इकाई को फिर से सक्रिय कर सकता है।
इंटफेक्स

1
@Gima ... हालाँकि, एक ओनेशोट इकाई जो RemainAfterExit=true"सक्रिय" रहेगी, जब इसकी प्रारंभिक प्रक्रिया समाप्त हो जाएगी, तो एक टाइमर के बाद के ट्रिगर्स को तब तक अनदेखा किया जाएगा जब तक कि कोई व्यवस्थापक स्पष्ट रूप से उस इकाई को निष्क्रिय नहीं करता है, या इसे नकारात्मक रूप से नीचे लाया जाता है। निर्भरता।
intelfx

1
जब तक लोग इसे आमंत्रित करते हैं, मैं इसे दोहराता रहता हूं। मुझे उम्मीद है कि systemd उनके डॉक्स को स्पष्ट नहीं करता है।
टॉमऑन टाइम

1
यह अब systemd डॉक्स का हिस्सा है - Note that in case the unit to activate is already active at the time the timer elapses it is not restarted, but simply left running. There is no concept of spawning new service instances in this case. freedesktop.org/software/systemd/man/systemd.timer.html
Sam
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.