नोट: मैंने मीडियम पर एक लेख लिखा है जिसमें बताया गया है कि सेवा कैसे बनाई जाए, और इस विशेष समस्या से कैसे बचा जाए: Systemd के साथ लिनक्स सेवा बनाना ।
मूल प्रश्न:
मैं हर समय काम कर रहे एक स्क्रिप्ट को रखने के लिए systemd का उपयोग कर रहा हूं:
[Unit]
Description=My worker
After=mysqld.service
[Service]
Type=simple
Restart=always
ExecStart=/path/to/script
[Install]
WantedBy=multi-user.target
हालाँकि रीस्टार्ट ठीक काम करता है यदि स्क्रिप्ट कुछ मिनटों के बाद सामान्य रूप से बाहर निकलता है, तो मैंने देखा है कि अगर यह बार-बार स्टार्टअप पर अमल करने में विफल रहता है, systemd
तो बस इसे शुरू करने का प्रयास करना छोड़ देगा:
Jun 14 11:10:31 localhost systemd[1]: test.service: Main process exited, code=exited, status=1/FAILURE
Jun 14 11:10:31 localhost systemd[1]: test.service: Unit entered failed state.
Jun 14 11:10:31 localhost systemd[1]: test.service: Failed with result 'exit-code'.
Jun 14 11:10:31 localhost systemd[1]: test.service: Service hold-off time over, scheduling restart.
Jun 14 11:10:31 localhost systemd[1]: test.service: Start request repeated too quickly.
Jun 14 11:10:31 localhost systemd[1]: Failed to start My worker.
Jun 14 11:10:31 localhost systemd[1]: test.service: Unit entered failed state.
Jun 14 11:10:31 localhost systemd[1]: test.service: Failed with result 'start-limit'.
इसी तरह, मेरी कार्यकर्ता स्क्रिप्ट की एक निकास स्थिति के साथ कई बार विफल रहता है 255
, systemd
उसे पुन: प्रारंभ करने की कोशिश कर देता है:
Jun 14 11:25:51 localhost systemd[1]: test.service: Failed with result 'exit-code'.
Jun 14 11:25:51 localhost systemd[1]: test.service: Service hold-off time over, scheduling restart.
Jun 14 11:25:51 localhost systemd[1]: test.service: Start request repeated too quickly.
Jun 14 11:25:51 localhost systemd[1]: Failed to start My worker.
Jun 14 11:25:51 localhost systemd[1]: test.service: Unit entered failed state.
Jun 14 11:25:51 localhost systemd[1]: test.service: Failed with result 'start-limit'.
क्या कुछ सेकंड के बाद हमेशा पीछे हटने के लिए मजबूर systemd
करने का एक तरीका है ?
StartLimitIntervalSec=0
और वॉयला।