सिस्टमड विभिन्न प्रकार के विभिन्न प्रकारों को संभालने में सक्षम है, विशेष रूप से निम्न में से एक
simple
- एक लंबी चलने वाली प्रक्रिया जो अपने आप को पृष्ठभूमि नहीं देती है और शेल से जुड़ी रहती है।
forking
- एक विशिष्ट डेमॉन जो खुद को उस प्रक्रिया से अलग करता है जो इसे चलाता है, प्रभावी रूप से खुद को पृष्ठभूमि दे रहा है।
oneshot
- एक अल्पकालिक प्रक्रिया जो बाहर निकलने की उम्मीद है।
dbus
- सरल की तरह, लेकिन स्टार्टअप्स में प्रक्रियाओं की अधिसूचना को डब के ऊपर भेजा जाता है।
notify
- सरल की तरह, लेकिन स्टार्टअप फिनिशिंग की प्रक्रियाओं को नोटिफिकेशन पर भेजा जाता है।
idle
- साधारण की तरह, लेकिन नौकरी शुरू होने के बाद बाइनरी शुरू की गई है।
आपके मामले में आपने उठाया है Type=forking
जिसका अर्थ है कि systemd खुद को कांटे की प्रक्रिया के लिए इंतजार कर रहा है और मूल प्रक्रिया समाप्त होने के लिए, जिसे यह एक संकेत के रूप में लेता है कि प्रक्रिया सफलतापूर्वक शुरू हो गई है। हालांकि, आपकी प्रक्रिया ऐसा नहीं कर रही है - यह अग्रभूमि में बनी हुई है और इसलिए systemctl start
अनिश्चित काल तक या प्रक्रियाओं के दुर्घटनाग्रस्त होने तक लटका रहेगा।
इसके बजाय, आप चाहते हैं Type=simple
, जो डिफ़ॉल्ट है ताकि आप समान प्रभाव प्राप्त करने के लिए पूरी तरह से लाइन को हटा सकें। इस मोड में सिस्टमैड प्रक्रियाओं के शुरू होने का इंतजार नहीं करता है (क्योंकि यह पता नहीं होता है कि ऐसा कब हुआ है) और इसलिए अभी सीधे निष्पादन और निर्भर सेवाओं को जारी रखता है। आपके मामले में कोई भी नहीं है इसलिए यह कोई मायने नहीं रखता।
सुरक्षा पर एक छोटा नोट:
आप सेवा को रूट के रूप में चला रहे हैं, यह हतोत्साहित किया जाता है क्योंकि यह एक अनपेक्षित उपयोगकर्ता के रूप में चलाने से कम सुरक्षित है। इसका कारण यह है कि अगर जेकिल में भेद्यता है जो किसी तरह आदेशों को निष्पादित करने की अनुमति देता है (संभवतः कोड के माध्यम से इसे पार्स कर रहा है) तो हमलावर को आपके सिस्टम को पूरी तरह से चलाने के लिए और कुछ नहीं करना होगा। यदि, दूसरी ओर, यह एक गैर-विशेषाधिकार प्राप्त उपयोगकर्ता के रूप में चलाया जाता है, तो हमलावर केवल उस उपयोगकर्ता के रूप में अधिक नुकसान करने में सक्षम है और अब आपको अपने सिस्टम को पूरी तरह से चलाने के लिए रूट विशेषाधिकार प्राप्त करने का प्रयास करना चाहिए। यह बस एक अतिरिक्त परत हमलावर जोड़ता है, हालांकि जाना चाहिए।
आप इसे केवल उसी उपयोगकर्ता के रूप में चला सकते हैं जो आपका वेब सर्वर चला रहा है, लेकिन यह आपको एक और संभावित हमले के लिए खुला छोड़ देता है। यदि आपके वेब सर्वर में कोई भेद्यता है, जो उपयोगकर्ता को आपके सिस्टम की फाइलों में हेरफेर करने की अनुमति देता है, तो वे उत्पन्न HTML फ़ाइलों को संशोधित कर सकते हैं, या स्रोत फ़ाइलों को सबसे खराब कर सकते हैं और आपके सर्वर को वे जो भी चाहें सेवा दे सकते हैं। हालाँकि, यदि उत्पन्न की गई फ़ाइलें और स्रोत फ़ाइलें केवल वेबसर्वर द्वारा पठनीय हैं और लिखने योग्य एक अन्य गैर-विशेषाधिकार प्राप्त उपयोगकर्ता हैं, जो वे आसानी से, वेब सर्वर पर हमला करके उन्हें संशोधित नहीं कर पाएंगे।
हालाँकि, यदि आप केवल इस सर्वर से स्थिर फ़ाइलों की सेवा कर रहे हैं और सर्वर को अद्यतित रखते हैं तो इन हमलों की संभावना बहुत कम है - लेकिन फिर भी संभव है। यह आपकी ज़िम्मेदारी है कि आप अपने सिस्टम को कितना गंभीर बना सकते हैं, इसके आधार पर इसे स्थापित करने के जोखिमों को तौलना है। इन दोनों युक्तियों को स्थापित करना बहुत आसान है और बिना रखरखाव ओवरहेड के बगल में।
Type=forking
। इसके अलावा, यहexecStart
शेल के विस्तार के रूप में नहीं चलेगा , ताकि&
अंत में इसे पृष्ठभूमि के झंडे के रूप में कभी नहीं समझा जाएगा।