सिस्टमड टाइमर यूनिट को निष्क्रिय करने का सही तरीका कौन सा है?


18

मैंने अपने कुछ क्रॉन जॉब्स को सिस्टमेड पर सफलतापूर्वक माइग्रेट कर लिया है। मैंने कुछ गाइडों का पालन किया और 3 फाइलें बनाने का मानक तरीका अपनाया:

myjob.timer - systemd timer unit
myjob.service - systemd service unit
myjob.sh

जैसा कि आप शायद अनुमान लगा सकते हैं, एक निश्चित समय पर myjob.timer को ट्रिगर किया जाता है, जो myjob.service चलाता है जो बदले में myjob.sh को निष्पादित करता है।

मेरे सभी टाइमर के लिए मेरे पास एक ही सेटअप है और अब जब मैं देख रहा हूं कि सब कुछ ठीक चल रहा है तो मैं myjob.timer को निष्क्रिय करना चाहता हूं, जो कि सिर्फ एक परीक्षक है।

क्या मैं बस:

systemctl --user disable myjob.timer

या मुझे भी करना है:

systemctl --user disable myjob.service

सही बात क्या है? मैं systemd में काफी नया हूं, इसलिए मैं सीखना चाहूंगा कि उचित तरीके से सामान कैसे किया जाए। मैं अनुमान लगा रहा हूं कि सिस्टम को अतिरिक्त सामान से मुक्त रखने के लिए दोनों इकाइयों को निष्क्रिय करना सही है।

जवाबों:


18

यदि myjob.serviceकोई [Install]ब्लॉक नहीं है, तो यह टाइमर को अक्षम करने के लिए पर्याप्त है। .serviceफ़ाइल शुरू करने के लिए टाइमर ही एकमात्र चीज़ थी , इसलिए .timerविकलांगों के साथ , .serviceफ़ाइल शुरू नहीं होगी ।

चलाने के लिए भी याद रखें systemctl --user stop myjob.timer। टाइमर को अक्षम करने से यह अगले बूट पर शुरू होने से रोकता है, लेकिन यह वर्तमान में चल रहे टाइमर को नहीं रोकता है।


मेरे प्रत्येक टाइमर यूनिट में एक [इंस्टॉल] ब्लॉक है। इसकी एक प्रविष्टि है, 'WantedBy = default.target'। मुझे यह उन गाइडों से मिला, जिनका मैंने अनुसरण किया था। क्या मैं पूरी तरह से [इंस्टॉल] ब्लॉक से छुटकारा पा सकता हूं?
बिटोफैगोब

1
ठीक। मैंने [इंस्टाल] सेक्शन के बारे में पढ़ा है और मुझे लगता है कि WantedBy = default.target सिर्फ यह सुनिश्चित करने के लिए है कि यूनिट, जब सक्षम हो, किसी भी सामान्य बूट सत्र (बहु-उपयोगकर्ता या चित्रमय) के दौरान जीवन में लाया जाता है। मैं मार्क स्टोसबर्ग की सलाह लूंगा और केवल टाइमर यूनिट को अक्षम कर दूंगा। मैं समाधान के रूप में उनके उत्तर को भी चिह्नित करूंगा। चीयर्स मार्क!
बिटोफैगोब

2
आप अपनी टाइमर इकाइयों पर [इंस्टाल] सेक्शन चाहते हैं ताकि वे बूट पर शुरू हों। आमतौर पर WantedBy=timers.target। आप केवल एक की जरूरत है [Install]एक सेवा के लिए खंड अगर आप चाहते हैं सेवा बूट समय है, जो यह लगता है कि आप पर शुरू कर दिया जा करने के लिए नहीं है इस मामले में चाहते हैं।
मार्क स्टोसबर्ग

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