$HOME
उपयोगकर्ता के होम डायरेक्टरी को इंगित करता है जो स्क्रिप्ट चला रहा है। सिस्टमड सेवाओं को रूट के साथ शुरू किया जाता है, इसलिए यह संभवतः करने की कोशिश करेगा /root/theFolder/run.sh
। सेवा फ़ाइलों में पूर्ण पथ का उपयोग करें।
आपके पास forking
विकल्प भी है । यह उस प्रोग्राम के लिए आवश्यक है जो स्वयं पृष्ठभूमि में है, क्या आपकी स्क्रिप्ट ऐसा करती है? अधिकांश नहीं करते हैं और यदि आपका नहीं है तो आपको इस विकल्प को हटा देना चाहिए या सिस्टमड आपकी स्क्रिप्ट के इंतजार कर रहा होगा जैसा कि उसने शुरू किया था।
साथ ही सिस्टम सर्विस फाइलें जो आपके होम डायरेक्टरी में स्क्रिप्ट्स की ओर इशारा करती हैं, वे हतोत्साहित होती हैं और संभवतः एक सुरक्षा चिंता का विषय है। चूँकि उन्हें रूट के रूप में चलाया जाता है, जो उन्हें संशोधित कर सकते हैं, संभवतः आपके कंप्यूटर पर रूट एक्सेस प्राप्त कर सकते हैं। स्क्रिप्ट को कॉपी करना /usr/local/bin
और यह सुनिश्चित करना बेहतर है कि इसे रोकने के लिए रूट के पास स्वामित्व और केवल लिखने योग्य है। सेवा फ़ाइल में विकल्पों User=
और Group=
विकल्पों का उपयोग करके स्क्रिप्ट को एक अनपेक्षित उपयोगकर्ता के रूप में चलाना भी एक अच्छा विचार है ।
यदि आप इसे अपने उपयोगकर्ता के रूप में चलाना चाहते हैं, तो बेहतर है कि आप सेवा फ़ाइल को ~/.config/systemd/user/
प्रारंभ करें और इसे प्रारंभ करें / इसे सक्षम करें systemctl --user enable yourservice && systemctl --user start yourservice
(ध्यान दें, अपने उपयोगकर्ता को रूट के रूप में चलाएं)। उपयोगकर्ता सेवा फ़ाइलों के बारे में अधिक जानकारी के लिए इसे देखें ।
systemctl daemon-reload
अपनी यूनिट फ़ाइल बनाने के बाद चलाया है ?