मेरे पास एक पुराना स्कूल डेमॉन है जिसे मैं सिस्टमड का उपयोग करके नियंत्रित करना चाहता हूं। जब इसकी कॉन्फ़िगरेशन फ़ाइल बदलती है, तो इसे मारना और पुनः आरंभ करना होगा। दूसरे शब्दों में, कॉन्फ़िगर फ़ाइल को संपादित करने के बाद, systemctl reload MYSERVICEप्रक्रिया को मारना चाहिए और इसे पुनरारंभ करना चाहिए।
प्रयास 1: चूक की कोशिश करो। यह सिस्टमड को बताता है कि डेमॉन कैसे शुरू करें, लेकिन इसे फिर से लोड कैसे करें।
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
परिणामस्वरूप, startऔर restartकाम करते हैं, लेकिन reloadइस त्रुटि देता है:
# systemctl reload MYSERVICE
Failed to reload MYSERVICE.service: Job type reload is not applicable for unit MYSERVICE.service.
प्रयास 2: यह बताएं कि प्रक्रिया को कैसे मारना है। यह प्रक्रिया को मारता है लेकिन systemd मेरे लिए इसे पुनः आरंभ नहीं करता है।
[Service]
ExecStart=/usr/bin/MYSERVICE
Type=simple
ExecReload=/bin/kill -HUP $MAINPID
...के बाद...
# systemctl daemon-reload
# systemctl reload MYSERVICE
... प्रक्रिया को मारता है, लेकिन यह स्वचालित रूप से पुनरारंभ नहीं होता है।
प्रयास 3: प्रक्रिया को पुनः आरंभ करने के लिए ExecReload का उपयोग करें। यह कुछ कारणों से विफल होता है:
ExecReload=/bin/kill -HUP $MAINPID ; /usr/bin/MYSERVICE
... त्रुटि संदेश मुझे मिलता है ...:
# systemctl daemon-reload
# systemctl reload MYSERVICE
Job for MYSERVICE.service failed because the control process exited with error code. See "systemctl status MYSERVICE.service" and "journalctl -xe" for details.
मुझे उम्मीद है कि वहाँ एक ReloadType = kill_and_restart या कुछ और होगा, लेकिन ऐसा कोई भाग्य नहीं होगा।
पुनः लोड होने पर डेमॉन को मारने और पुनः आरंभ करने के लिए सिस्टमैड को कैसे बताया जाए?